概述

编辑

这是 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 之上的更具 Python 风格的库。

它提供了一种更方便和惯用的方式来编写和操作查询。它与 Elasticsearch JSON DSL 保持密切联系,镜像其术语和结构,同时从 Python 直接使用定义的类或类似查询集的表达式来公开整个 DSL 范围。

它还提供了一个可选的持久层,用于以类似 ORM 的方式将文档作为 Python 对象进行处理:定义映射、检索和保存文档,并将文档数据包装在用户定义的类中。