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 |
如果您需要同时安装多个版本,也会发布版本,例如 elasticsearch7
和 elasticsearch8
。
示例用法
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 对象处理:定义映射、检索和保存文档、将文档数据包装在用户定义的类中。
目录
- 快速入门
- 交互式示例
- Elasticsearch API 参考
- 异常和警告
- 使用 asyncio 与 Elasticsearch
- 辅助工具
- 发行说明
许可证
版权所有 2023 Elasticsearch B.V. 根据 Apache 许可证 2.0 版获得许可。