Python Elasticsearch 客户端

Elasticsearch 的官方底层客户端。其目标是为 Python 中所有与 Elasticsearch 相关的代码提供共同基础;因此,它试图保持中立和高度可扩展性。

下载最新版本的 Elasticsearch注册 免费试用 Elastic Cloud。

安装

使用 pip 安装 elasticsearch

$ python -m pip install elasticsearch

如果您的应用程序在 Python 中使用 async/await,您可以使用 async 额外功能进行安装

$ python -m pip install elasticsearch[async]

阅读有关 如何将 asyncio 与此项目一起使用 的更多信息。

兼容性

语言客户端是向前兼容的;这意味着客户端支持与更高或相同次要版本的 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

client = Elasticsearch("http://localhost:9200/", api_key="YOUR_API_KEY")

doc = {
    "author": "kimchy",
    "text": "Elasticsearch: cool. bonsai cool.",
    "timestamp": datetime.now(),
}
resp = client.index(index="test-index", id=1, document=doc)
print(resp["result"])

resp = client.get(index="test-index", id=1)
print(resp["_source"])

client.indices.refresh(index="test-index")

resp = client.search(index="test-index", query={"match_all": {}})
print("Got {} hits:".format(resp["hits"]["total"]["value"]))
for hit in resp["hits"]["hits"]:
    print("{timestamp} {author} {text}".format(**hit["_source"]))

快速入门 页面中查看更多示例。

功能

此客户端被设计为 Elasticsearch REST API 的非常薄的包装器,以实现最大的灵活性。这意味着此客户端中没有意见;这也意味着某些 API 从 Python 使用起来有点麻烦。我们创建了一些 辅助工具 来帮助解决此问题,并在其之上创建了一个更高级别的库(elasticsearch-dsl),以提供更方便的方式来使用 Elasticsearch。

Elasticsearch-DSL

有关范围更有限的更高级别客户端库,请查看 elasticsearch-dsl - 一个位于 elasticsearch-py 之上的更 Python 化的库。

elasticsearch-dsl 通过反映 Elasticsearch JSON DSL 的术语和结构,同时直接使用定义的类或类似查询集的表达式从 Python 公开 DSL 的整个范围,提供了一种更方便、更惯用的方式来编写和操作 查询

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

目录

许可证

版权所有 2023 Elasticsearch B.V. 根据 Apache 许可证 2.0 版获得许可。

索引和表格