Elasticsearch py客户端库安装及使用方法解析
一、介绍
elasticsearch-py是一个官方提供的low-level的elasticsearchpython客户端库。为什么说它是一个low-level的客户端库呢?因为它只是对elasticsearch的restAPI接口做了一层简单的封装,因此提供了最大的灵活性,但是于此同时使用起来就不是太方便。相对于这个low-level的客户端库,官方还提供了一个high-level的python客户端库:elasticsearch-dsl,这个会在另一篇文章中介绍。
更多介绍参见官方文档:https://elasticsearch-py.readthedocs.io/en/master/
二、安装
不同的elasticsearch版本要求不同的客户端版本,所以安装的时候需要根据你的elasticsearch来决定,下面是一个简单的参考:
#Elasticsearch6.x
elasticsearch>=6.0.0,<7.0.0
#Elasticsearch5.x
elasticsearch>=5.0.0,<6.0.0
#Elasticsearch2.x
elasticsearch>=2.0.0,<3.0.0
在兼容的大的版本号下尽量选择最新的版本。
pipinstallelasticsearch
三、API
3.1API文档
所有API都尽可能紧密的映射原始的restAPI。
3.1.1全局选项
某些被客户端添加的参数可以使用在所有的API上。
1.ignore
被用户忽略某些http错误状态码。
fromelasticsearchimportElasticsearch es=Elasticsearch() #ignore400causebyIndexAlreadyExistsExceptionwhencreatinganindex es.indices.create(index='test-index',ignore=400) #ignore404and400 es.indices.delete(index='test-index',ignore=[400,404])
2.timeout
被用于设置超时时间。
#onlywaitfor1second,regardlessoftheclient'sdefault
es.cluster.health(wait_for_status='yellow',request_timeout=1)
3.filter_path
被用于过滤返回值。
es.search(index='test-index',filter_path=['hits.hits._id','hits.hits._type'])
3.1.2Elasticsearch
Elasticsearch是一个low-level客户端,提供了一个从python到esrest端点的直接映射。这个实例拥有属性cat、cluster、indices、ingest、nodes、snapshot和tasks,通过他们可以访问CatClient、ClusterClient、IndicesClient、IngestClient、NodesClient、SnapshotClient和TasksClient的实例。
elasticsearch类包含了操作elasticsearch许多常用方法,例如:get、mget、search、index、bulk、create、delete等,这些方法的具体用法,可以参考elasticsearch-py的官方文档。
在执行以上方法之前,首先需要获得一个elasticsearch的实例,而获取这个实例有两个方法,一个是给elasticsearch的初始化函数传递一个connectionclass实例,另一个是给elasticsearch的初始化函数传递要连接的node的host和port,其实最终这些host、port还是被传递给了connectionclass。
#createconnectiontolocalhostusingtheThriftConnection es=Elasticsearch(connection_class=ThriftConnection) #connecttolocalhostdirectlyandanothernodeusingSSLonport443 #andanurl_prefix.Notethat``port``needstobeanint. es=Elasticsearch([ {'host':'localhost'}, {'host':'othernode','port':443,'url_prefix':'es','use_ssl':True}, ])
3.1.3Indices
indices用于操作、查询关于索引的信息,或者可以说是操作、查询索引相关的元数据。
3.1.4Ingest
ingest是一个插件,用于丰富插入数据的插入。
3.1.5Cluster
cluster用于获取和集群相关的信息,例如:集群的健康状态、settings等。
3.1.6Nodes
nodes用于获取和节点相关的信息。
3.1.7Cat
cat可以用来获取别名、分片信息、文档数量等信息。
3.1.8Snapshot
snapshot用于管理快照。
3.1.9Tasks
tasks是用于任务管理的,官方文档上提示该task是新特性,未来可能会改变,所以要注意。
3.2X-PackAPIs
X-Pack是ElasticStack扩展,它将安全性,警报,监视,报告和图形功能捆绑到一个易于安装的程序包中。
- 3.2.1Info
- 3.2.2GraphExplore
- 3.3.3LicensingAPI
- 3.3.4MachineLearning
- 3.3.5SecurityAPIS
- 3.3.6WatcherAPIS
- 3.3.7MigrationAPIS
3.3异常
这一节展示了使用elasticsearch-py时可能抛出的异常。
3.4连接层API
connection是负责与集群连接的类。
3.4.1Transport
transport封装与逻辑相关的传输。处理各个连接的实例化,并创建一个连接池来保存它们。
3.4.2ConnectionPool
connectionpool是一个连接池,用于管理连接。
3.4.3ConnectionSelector
connectionselector是一个连接选择器,它最好的一个例子是zone-aware选择,可以自动选择本地连接,只有当本地node都无法连接是才会去选择连接其他node。
3.4.4Urllib3HttpConnection
默认connectionclass。
3.5传输类
传输模块列出了可以被当做elasticsearch初始化参数connection_class的connectionclass。
3.5.1Connection
connection负责管理与elasticsearch节点的连接。
3.5.2Urllib3HttpConnection
基于urllib的connectionclass,是默认connectionclass。
3.5.3RequestsHttpConnection
基于requests的connectionclass,除非要使用requests相关的高级特性,否则建议不要使用该类。
3.6helpers
helpers是一个简单的辅助函数的集合,这些函数抽象了一些细节或原始API。
3.6.1bulkhelpers
bulkAPI的特定格式要求导致直接使用它们会非常复杂,因此这里提供了几个bulkAPI的helper函数,具体使用方法可以参考elasticsearch-py的官方文档。
3.6.2scan
scan是对scrollAPI的简单抽象。
3.6.3reindex
reindex用于将可能满足给定查询的一个索引中的所有文档重新索引到另一个索引
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。