Elasticsearch 搜索 API

17 Mar 2025 | 6 分钟阅读

Elasticsearch 提供了搜索 API,用于跨索引和所有类型搜索数据。它通过执行搜索查询来帮助在 Elasticsearch 中搜索数据,并返回与查询匹配的搜索结果。此 API 使您能够在 Elasticsearch 中搜索数据。您可以通过两种方式搜索数据 -

  • 通过发送带有字符串参数的查询的 GET 请求,或者
  • 使用在消息体中包含查询的 POST 请求。

看看这两种类型的例子 -

使用 GET 请求

执行以下查询。它将显示 new_student 索引中存在的所有记录。

复制代码

响应

在下面的响应中,您可以看到在执行上述请求后找到了两条记录。

使用 POST 请求

复制代码

响应

响应将类似于 GET 方法请求。查看下面的屏幕截图,了解 elasticsearch 插件中的输出 -

Elasticsearch Search APIs

在上面的屏幕截图中,您可以看到返回了两条记录,与 GET 请求输出相同。

现在,让我们转到搜索 API 的类型,它分为三种类型

  1. 多索引
  2. 多类型
  3. URI 搜索

多索引是最常用的 API。但是,我们将详细讨论每个搜索 API,并提供示例。在此之前,以下是一些可以在搜索操作中传递的请求参数 -

参数描述
Q用于指定查询字符串。
Sort此参数用于对响应进行排序。
字段从选定字段中获取结果。
Lenient(宽松)此参数用于通过将值设置为 true 来忽略基于格式的错误。
from(从)此参数有助于指定索引的起始点。默认值为 0。
大小指定要返回的匹配数。默认情况下,大小为 10。
Timeout(超时)限制搜索时间。
terminate_after(终止于)负责将每个分片的响应限制为特定数量的文档。

现在,让我们详细讨论每个 API -

1. 多索引

多索引 API 是一种搜索 API,用于在索引中搜索文档。它在某些特定索引或所有索引中搜索所有文档。对于某些特定索引搜索,请指定要执行搜索操作的索引名称,用逗号 (,) 分隔。如果要搜索所有索引,请指定 _all 关键字而不是索引名称。

多索引 API 允许用户一次在两个或多个索引上进行搜索。

例如,我们将使用单个查询搜索两个不同索引(student 和 new_student)中课程为大众传播的所有学生。

方法:GET
API:_search
索引:student, new_student
参数:q

执行以下查询并搜索文档。

复制代码

响应

在下面的响应中,您可以看到在执行上述查询后找到了两条记录。

查看下面的屏幕截图,了解如何在 elasticsearch 插件中执行查询 -

Elasticsearch Search APIs

2. 多类型

多类型搜索 API 提供了在特定索引中跨所有类型或某些特定类型搜索所有文档的功能。在下面的示例中,我们将执行以下查询以从所有类型的“student”索引中搜索 JSON 文档,其中邮政编码为 30501。

方法: GET
API: _search
索引: student
参数: q

执行以下查询并搜索文档。

复制代码

响应

在下面的响应中,您可以看到 student 索引中有一个 JSON 文档的邮政编码为 30501。

查看下面的屏幕截图,了解如何在 elasticsearch 插件中执行查询 -

Elasticsearch Search APIs
请记住 - 在 elasticsearch 数据库中,查询区分大小写,例如,_search 和 _Search 是不同的。同样,zip 和 Zip 在 elasticsearch 中被不同对待。因此,在创建查询时要小心。

3. URI 搜索

URI 搜索是统一资源标识符搜索。它允许我们使用 URI 在搜索操作中传递多个请求参数,以便可以完全执行该请求。每当您使用此模式执行搜索查询时,都不会公开所有搜索选项。但是,它对于 curl 测试很方便。

执行以下查询并在 student 索引中搜索文档。

复制代码

响应

上面的查询将返回 new_student 索引中存在的所有文档。

查看下面的屏幕截图,了解如何在 elasticsearch 插件中执行 URI 搜索操作 -

Elasticsearch Search APIs

按 id 获取多个记录

我们甚至可以通过单个查询请求中的 id 搜索多个文档,以及所有这些搜索操作。为此,我们需要指定我们正在查找的每个文档的 id。

例如

我们将使用 POST API 从索引中检索多个文档。这还不够;我们还需要在请求字符串中附加 _mget 并定义文档 id 查询空间以获取多个记录。

复制代码

在这里,我们获取 id 为 02 和 04 的文档。

响应

您将获得类似以下响应的输出。