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