Spec-Zone.ru › Elasticsearch 8
›Elasticsearch Guide [8.17] ›REST API ›ES|QL API

ES|QL асинхронный запрос API

Справочник нового API

Для получения самых последних данных об API обратитесь к ES|QL API.

Выполняет асинхронный ES|QL запрос.

API асинхронного запроса позволяет асинхронно выполнить запрос, отслеживать его прогресс и получать результаты, когда они станут доступны.

API принимает те же параметры и тело запроса, что и синхронный запрос API, а также дополнительные параметры, связанные с асинхронной обработкой, как указано ниже.

resp = client.esql.async_query(
    query="\n    FROM library\n    | EVAL year = DATE_TRUNC(1 YEARS, release_date)\n    | STATS MAX(page_count) BY year\n    | SORT year\n    | LIMIT 5\n  ",
    wait_for_completion_timeout="2s",
)
print(resp)
const response = await client.transport.request({
  method: "POST",
  path: "/_query/async",
  body: {
    query:
      "\n    FROM library\n    | EVAL year = DATE_TRUNC(1 YEARS, release_date)\n    | STATS MAX(page_count) BY year\n    | SORT year\n    | LIMIT 5\n  ",
    wait_for_completion_timeout: "2s",
  },
});
console.log(response);
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 секунды), результаты не возвращаются, а возвращается ответ, включающий:

  • Идентификатор запроса
  • Значение is_running, равное true, указывающее на то, что запрос выполняется

Запрос продолжает выполняться в фоновом режиме, не блокируя другие запросы.

{
  "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.

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

(строка) Идентификатор запроса.

Этот идентификатор запроса предоставляется только в следующих случаях:

  • Запрос не возвращает полных результатов в течение периода таймаута параметра wait_for_completion_timeout.
  • Параметр запроса keep_on_completion равен true.

Вы можете использовать этот идентификатор с ES|QL API асинхронного получения запроса для получения текущего состояния и доступных результатов запроса.

is_running

(Булево) Если true, запрос выполняется.

© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/8.17/esql-async-query-api.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API