概述编辑

这是 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

如果您需要同时安装多个版本,则较旧的版本也会作为 elasticsearch7elasticsearch8 发布。

示例使用编辑

简单用例

>>> 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 对象:定义映射、检索和保存文档、将文档数据包装在用户定义的类中。