Elasticsearch DSL

Elasticsearch DSL 是一个高级库,旨在帮助编写和运行针对 Elasticsearch 的查询。它建立在官方低级客户端 (elasticsearch-py) 之上。

它提供了一种更方便、更符合习惯的方式来编写和操作查询。它紧密地遵循 Elasticsearch JSON DSL,镜像其术语和结构。它通过定义的类或类似查询集的表达式,从 Python 中暴露了 DSL 的全部范围。以下是一个示例

from elasticsearch_dsl import Search

s = Search(index="my-index") \
    .filter("term", category="search") \
    .query("match", title="python")   \
    .exclude("match", description="beta")
for hit in s:
    print(hit.title)

或者使用异步 Python

from elasticsearch_dsl import AsyncSearch

async def run_query():
    s = AsyncSearch(index="my-index") \
        .filter("term", category="search") \
        .query("match", title="python")   \
        .exclude("match", description="beta")
    async for hit in s:
        print(hit.title)

它还提供了一个可选的包装器,用于将文档作为 Python 对象进行操作:定义映射、检索和保存文档,将文档数据包装在用户定义的类中。

要使用其他 Elasticsearch API(例如集群健康状况),只需使用底层客户端即可。

安装

使用 pip 安装 elasticsearch-dsl

pip install elasticsearch-dsl

对于异步应用程序,请使用 async 额外安装

pip install elasticsearch-dsl[async]

阅读更多关于 如何在该项目中使用 asyncio 的信息。

示例

请参阅 示例 目录,以查看使用 elasticsearch-dsl 的一些复杂示例。

兼容性

该库与所有 Elasticsearch 版本(自 2.x 起)兼容,但您**必须使用匹配的主版本**

对于**Elasticsearch 8.0** 及更高版本,请使用库的主版本 8 (8.x.y)。

对于**Elasticsearch 7.0** 及更高版本,请使用库的主版本 7 (7.x.y)。

对于**Elasticsearch 6.0** 及更高版本,请使用库的主版本 6 (6.x.y)。

对于**Elasticsearch 5.0** 及更高版本,请使用库的主版本 5 (5.x.y)。

对于**Elasticsearch 2.0** 及更高版本,请使用库的主版本 2 (2.x.y)。

在您的 setup.pyrequirements.txt 中设置需求的推荐方法是

# Elasticsearch 8.x
elasticsearch-dsl>=8.0.0,<9.0.0

# Elasticsearch 7.x
elasticsearch-dsl>=7.0.0,<8.0.0

# Elasticsearch 6.x
elasticsearch-dsl>=6.0.0,<7.0.0

# Elasticsearch 5.x
elasticsearch-dsl>=5.0.0,<6.0.0

# Elasticsearch 2.x
elasticsearch-dsl>=2.0.0,<3.0.0

开发工作正在 main 分支上进行,较旧的分支只接收错误修复版本

许可证

版权所有 2013 Elasticsearch

根据 Apache 许可证 2.0 版(“许可证”)许可;除非符合许可证,否则您不得使用此文件。您可以在以下网址获取许可证副本:

除非适用法律要求或以书面形式同意,否则根据许可证分发的软件按“现状”分发,不附带任何明示或暗示的担保或条件。请参阅许可证以了解管理许可证下权限和限制的具体语言。

内容