概述
编辑概述编辑
这是 Elasticsearch 的官方低级 Python 客户端。它的目标是为 Python 中所有与 Elasticsearch 相关的代码提供共同基础。出于这个原因,该客户端的设计是无主见且可扩展的。API 参考可在 Read the Docs 上找到。
兼容性编辑
语言客户端是向前兼容的;这意味着客户端支持与更高或等于 Elasticsearch 次要版本的通信,而不会出现故障。但这并不意味着客户端会自动支持较新 Elasticsearch 版本的新功能;只有在发布新客户端版本后才有可能。例如,8.12 客户端版本不会自动支持 Elasticsearch 8.13 版本的新功能,需要 8.13 客户端版本才能实现。Elasticsearch 语言客户端仅向后兼容默认发行版,且不提供任何保证。
Elasticsearch 版本 | elasticsearch-py 分支 | 支持 |
---|---|---|
main |
main |
|
8.x |
8.x |
8.x |
7.x |
7.x |
7.17 |
如果您需要同时安装多个版本,则较旧的版本也会作为 elasticsearch7
和 elasticsearch8
发布。
示例使用编辑
简单用例
>>> from datetime import datetime >>> from elasticsearch import Elasticsearch # Connect to 'https://127.0.0.1:9200' >>> client = Elasticsearch("https://127.0.0.1:9200") # Datetimes will be serialized: >>> client.index(index="my-index-000001", id=42, document={"any": "data", "timestamp": datetime.now()}) {'_id': '42', '_index': 'my-index-000001', '_type': 'test-type', '_version': 1, 'ok': True} # ...but not deserialized >>> client.get(index="my-index-000001", id=42)['_source'] {'any': 'data', 'timestamp': '2013-05-12T19:45:31.804229'}
有关如何将数据导入 Elastic Cloud 的详细示例,请参阅 此页面。
功能编辑
该客户端的功能包括
- 将基本 Python 数据类型转换为 JSON,反之亦然
- 可配置的集群节点自动发现
- 持久连接
- 负载均衡(使用可插拔的选择策略)跨所有可用节点
- 瞬态错误时的节点超时
- 线程安全
- 可插拔架构
该客户端还包含一组方便的 辅助程序,用于执行一些更具吸引力的任务,例如批量索引和重新索引。
Elasticsearch DSL编辑
对于范围更有限的更高级别的客户端库,请查看 elasticsearch-dsl - 一个建立在 elasticsearch-py
之上的更 Pythonic 库。
它提供了一种更方便且更符合 Python 风格的方式来编写和操作 查询。它紧密地遵循 Elasticsearch JSON DSL,镜像其术语和结构,同时通过 Python 公开 DSL 的全部范围,无论是直接使用定义的类还是使用类似查询集的表达式。
它还提供了一个可选的 持久层,用于以类似 ORM 的方式处理文档作为 Python 对象:定义映射、检索和保存文档、将文档数据包装在用户定义的类中。