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

先决条件编辑

  • 如果启用了 Elasticsearch 安全功能,则您必须对要查询的数据流、索引或别名具有 read 索引权限

路径参数编辑

该 API 接受与同步 查询 API 相同的参数。

请求体编辑

该 API 接受与同步 查询 API 相同的请求体,以及以下参数

wait_for_completion_timeout

(可选,时间值)等待请求完成的超时时间。默认为 1 秒,表示请求将等待 1 秒以获取查询结果。

如果查询在此期间内完成,则将返回结果。否则,将返回一个查询 id,稍后可以使用该 ID 检索结果。

如果请求在此期间内未完成,则返回一个查询 id

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:

您可以将此 ID 与 ES|QL 异步查询获取 API 一起使用,以获取查询的当前状态和可用结果。

is_running

(布尔值)如果为 true,则查询请求仍在执行中。