Elasticsearch:Async search API
Posted Elastic 中国社区官方博客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Elasticsearch:Async search API相关的知识,希望对你有一定的参考价值。
当我们想要执行持续时间较长的查询时,执行异步操作是一个很好的选择。 在这篇文章中,我们将学习如何管理异步查询。异步操作由 async search API 执行。 异步搜索 API 具有与 _search API 相同的参数,因此你无需构建特殊查询。
在我之前的文章 “Elasticsearch:异步搜索 - async search” 对异步请求有一个描述。我再之前的文章 “Elasticsearch: Python 客户端现在支持异步 I/O” 也对这个 API 在 Python 中的使用进行了描述。在今天的文章中,我们在 Kibana 中来模拟这个请求。
在今天的展示中,我将使用 Elastic Stack 8.6.0 来进行展示。
准备数据
我们使用 Kibana 中自带的数据:
这样我们就在 Elasticsearch 中创建了一个叫做 kibana_sample_data_logs 的索引。
异步查询
要运行异步查询,你需要使用 _async_search API 运行它。 让我们运行以下示例:
POST kibana_sample_data_logs/_async_search
"query":
"match_all":
上述命令返回的结果为:
答案与我们习惯在 _search API 中看到的不同。 现在我们有了属于异步搜索 API 的字段。 我将对 is_running 字段进行注释,它表示查询执行状态,结果表明查询已被执行。
我的数据库中的数据很少,因此为了使这个示例更有趣,我将添加参数 wait_for_completion_timeout=0ms。 这表示查询将等待 0 毫秒的响应,因为搜索所花的时间总会大于 0 毫秒,设置为 0 毫秒让我们看看 async_search 是如何工作的。
POST kibana_sample_data_logs/_async_search?wait_for_completion_timeout=0ms
请注意,is_running 为 true,表示查询尚未返回结果,现在我们有了 id 字段。 这个 id 字段允许你检索查询结果并跟踪状态。
让我们看看查询的状态:
GET _async_search/status/FjBVQV9GTkMxVG9pZWNnYmhaZTVpZXcddFpMeTgyS1JUYWlDZHBzYmtFWW51QTo3OTgzOTA=
上面命令显示的结果为:
状态结果表明查询已执行,我们可以检索结果。
要获得结果,只需运行传递 id 的查询。
GET _async_search/FjBVQV9GTkMxVG9pZWNnYmhaZTVpZXcddFpMeTgyS1JUYWlDZHBzYmtFWW51QTo3OTgzOTA=
这是异步搜索 API 的一个应用程序。 我希望它有用!
以上是关于Elasticsearch:Async search API的主要内容,如果未能解决你的问题,请参考以下文章
Elasticsearch:Async search API
Elasticsearch:Async search API
Elasticsearch报错:search.max_async_search_response_size