ES|QL 异步查询 API
编辑ES|QL 异步查询 API编辑
运行异步 ES|QL 查询。
异步查询 API 允许您异步执行查询请求,监控其进度,并在结果可用时检索结果。
该 API 接受与同步 查询 API 相同的参数和请求体,以及如下所述的其他异步相关属性。
POST /_query/async { "query": """ FROM library | EVAL year = DATE_TRUNC(1 YEARS, release_date) | STATS MAX(page_count) BY year | SORT year | LIMIT 5 """, "wait_for_completion_timeout": "2s" }
如果在给定的超时时间(在本例中为 2 秒)内结果不可用,则不会返回任何结果,而是返回一个包含以下内容的响应:
- 查询 ID
- 值为 *true* 的
is_running
,表示查询正在进行中
查询继续在后台运行,不会阻塞其他请求。
{ "id": "FmNJRUZ1YWZCU3dHY1BIOUhaenVSRkEaaXFlZ3h4c1RTWFNocDdnY2FSaERnUTozNDE=", "is_running": true }
否则,如果响应的 is_running
值为 false
,则异步查询已完成并返回结果。
{ "is_running": false, "columns": ... }
请求编辑
POST /_query/async
请求体编辑
该 API 接受与同步 查询 API 相同的请求体,以及以下参数
-
keep_on_completion
-
(可选,布尔值)如果为
true
,则查询及其结果将存储在集群中。如果为
false
,则仅当请求未在wait_for_completion_timeout
参数设置的时间段内完成时,查询及其结果才会存储在集群中。默认为false
。 -
keep_alive
-
(可选,时间值)查询及其结果在集群中存储的时间段。默认为
5d
(五天)。当此时间段到期时,即使查询仍在进行中,也会删除查询及其结果。
如果
keep_on_completion
参数为false
,则 Elasticsearch 仅存储未在wait_for_completion_timeout
参数设置的时间段内完成的异步查询,而不管此值如何。
响应体编辑
该 API 返回与同步 查询 API 相同的响应体,以及以下属性
-
id
-
(字符串)查询的标识符。
仅当满足以下条件之一时,才会提供此查询 ID:
- 查询请求未在
wait_for_completion_timeout
参数的超时时间内返回完整结果。 - 查询请求的
keep_on_completion
参数为true
。
您可以将此 ID 与 ES|QL 异步查询获取 API 一起使用,以获取查询的当前状态和可用结果。
- 查询请求未在
-
is_running
-
(布尔值)如果为
true
,则查询请求仍在执行中。