Elasticsearch的Python客户端
项目描述
官方低级Elasticsearch客户端。其目标是提供一个在Python中处理所有与Elasticsearch相关的代码的共同平台;因此,它试图不带有偏见且非常易于扩展。
有关更高级别的客户端库,请参阅 elasticsearch-dsl - 位于 elasticsearch-py 之上的更Pythonic库。
它提供了一种更方便、更自然的编写和操作查询的方法。它紧贴Elasticsearch JSON DSL,模仿其术语和结构,同时通过Python直接使用定义的类或类似查询集的表达式,暴露了整个DSL的范围。
它还提供了一个可选的持久化层,以类似于ORM的方式处理Python对象:定义映射、检索和保存文档、在用户定义的类中包装文档数据。
兼容性
该库与自0.90.x版本的Elasticsearch所有版本兼容,但您必须使用匹配的主版本
对于6.0版及以后的Elasticsearch,请使用库的主版本6(6.x.y)。
对于5.0版及以后的Elasticsearch,请使用库的主版本5(5.x.y)。
对于2.0版及以后的Elasticsearch,请使用库的主版本2(2.x.y),依此类推。
在您的setup.py或requirements.txt中设置需求的首选方式是
# Elasticsearch 6.x elasticsearch>=6.0.0,<7.0.0 # Elasticsearch 5.x elasticsearch>=5.0.0,<6.0.0 # Elasticsearch 2.x elasticsearch>=2.0.0,<3.0.0
如果您需要同时安装多个版本,则较旧的版本也作为elasticsearch2、elasticsearch5和elasticsearch6发布。
安装
使用
pip install "elasticsearch>=6,<7"
示例用法
简单用例
>>> from datetime import datetime >>> from elasticsearch import Elasticsearch # by default we connect to localhost:9200 >>> es = Elasticsearch() # create an index in elasticsearch, ignore status code 400 (index already exists) >>> es.indices.create(index='my-index', ignore=400) {u'acknowledged': True} # datetimes will be serialized >>> es.index(index="my-index", doc_type="test-type", id=42, body={"any": "data", "timestamp": datetime.now()}) {u'_id': u'42', u'_index': u'my-index', u'_type': u'test-type', u'_version': 1, u'ok': True} # but not deserialized >>> es.get(index="my-index", doc_type="test-type", id=42)['_source'] {u'any': u'data', u'timestamp': u'2013-05-12T19:45:31.804229'}
完整文档.
Elastic Cloud(及SSL)用例
>>> from elasticsearch import Elasticsearch >>> es = Elasticsearch("https://elasticsearch.url:port", http_auth=('elastic','yourpassword')) >>> es.info()
使用自签名证书的SSL上下文用例
>>> from elasticsearch import Elasticsearch >>> from ssl import create_default_context >>> context = create_default_context(cafile="path/to/cafile.pem") >>> es = Elasticsearch("https://elasticsearch.url:port", ssl_context=context, http_auth=('elastic','yourpassword')) >>> es.info()
功能
客户端的功能包括
将基本Python数据类型转换为JSON,反之亦然(出于性能原因,日期时间不会解码)
可配置的自动发现集群节点
持久连接
对所有可用节点进行负载均衡(具有可插拔的选择策略)
失败的连接惩罚(基于时间 - 失败的连接不会重试,直到达到超时)
支持SSL和HTTP身份验证
线程安全
可插拔架构
许可证
版权2017年Elasticsearch
根据Apache许可证版本2.0(“许可证”);除非法律要求或书面同意,否则不得使用此文件,除非符合许可证。您可以在以下位置获得许可证副本:
除非适用法律要求或书面同意,否则在许可证下分发的软件按“原样”基础分发,不提供任何明示或暗示的保证或条件。请参阅许可证,了解具体语言的许可权限和限制。