概述
编辑概述
编辑这是 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
之上的更具 Python 风格的库。
它提供了一种更方便和惯用的方式来编写和操作查询。它与 Elasticsearch JSON DSL 保持密切联系,镜像其术语和结构,同时从 Python 直接使用定义的类或类似查询集的表达式来公开整个 DSL 范围。
它还提供了一个可选的持久层,用于以类似 ORM 的方式将文档作为 Python 对象进行处理:定义映射、检索和保存文档,并将文档数据包装在用户定义的类中。