Run an async ES|QL query
- POST /_query/async
Asynchronously run an ES|QL (Elasticsearch query language) query, monitor its progress, and retrieve results when they become available.
The API accepts the same parameters and request body as the synchronous query API, along with additional async related properties.
- Index privileges:
read
Query Parameters
-
allow_partial_resultsboolean · default: true If
true, partial results will be returned if there are shard failures, but the query can continue to execute on other clusters and shards. Iffalse, the query will fail if there are any failures.To override the default behavior, you can set the
esql.query.allow_partial_resultscluster setting tofalse.-
delimiterstring · default: , The character to use between values within a CSV row. It is valid only for the CSV format.
-
drop_null_columnsboolean · default: false Indicates whether columns that are entirely
nullwill be removed from thecolumnsandvaluesportion of the results. Iftrue, the response will include an extra section under the nameall_columnswhich has the name of all the columns.-
formatEsqlFormat A short version of the Accept header, e.g. json, yaml.
csv,tsv, andtxtformats will return results in a tabular format, excluding other metadata fields from the response.For async requests, nothing will be returned if the async query doesn't finish within the timeout. The query ID and running status are available in the
X-Elasticsearch-Async-IdandX-Elasticsearch-Async-Is-RunningHTTP headers of the response, respectively.-
Values:
csvjsontsvtxtyamlcborsmilearrow
Request
-
columnarboolean -
By default, ES|QL returns results as rows. For example, FROM returns each individual document as one row. For the JSON, YAML, CBOR and smile formats, ES|QL can return the results in a columnar fashion where one row represents all the values of a certain column in the results.
-
filterQueryContainer -
Specify a Query DSL query in the filter parameter to filter the set of documents that an ES|QL query runs on.
-
time_zonestring -
Sets the default timezone of the query.
-
localestring -
Returns results (especially dates) formatted per the conventions of the locale.
-
paramsESQLParams -
To avoid any attempts of hacking or code injection, extract the values in a separate list of parameters. Use question mark placeholders (?) in the query string for each of the parameters.
-
profileboolean -
If provided and
truethe response will include an extraprofileobject with information on how the query was executed. This information is for human debugging and its format can change at any time but it can give some insight into the performance of each part of the query. -
querystringrequired -
The ES|QL query API accepts an ES|QL query string in the query parameter, runs it, and returns the results.
-
tablesmap string to string to TableValuesContainer -
Tables to use with the LOOKUP operation. The top level key is the table name and the next level key is the column name.
-
include_ccs_metadataboolean · default: false -
When set to
trueand performing a cross-cluster/cross-project query, the response will include an extra_clustersobject with information about the clusters that participated in the search along with info such as shards count. -
include_execution_metadataboolean · default: false -
When set to
true, the response will include an extra_clustersobject with information about the clusters that participated in the search along with info such as shards count. This is similar toinclude_ccs_metadata, but it also returns metadata when the query is not CCS/CPS -
wait_for_completion_timeoutstring Duration · default: 1s -
The period to wait for the request to finish. By default, the request waits for 1 second for the query results. If the query completes during this period, results are returned Otherwise, a query ID is returned that can later be used to retrieve the results.
-
keep_alivestring Duration · default: 5d -
The period for which the query and its results are stored in the cluster. The default period is five days. When this period expires, the query and its results are deleted, even if the query is still ongoing. If the
keep_on_completionparameter is false, Elasticsearch only stores async queries that do not complete within the period set by thewait_for_completion_timeoutparameter, regardless of this value. -
keep_on_completionboolean · default: false -
Indicates whether the query and its results are stored in the cluster. If false, the query and its results are stored in the cluster only if the request does not complete during the period set by the
wait_for_completion_timeoutparameter. -
settingsEsqlQuerySettings -
Per-query settings, the request-body equivalent of the in-query
SETcommand. For example,time_zonecan be supplied here instead of as a top-level field. -
time_zonestring -
The default timezone to be used in the query. It defaults to UTC and overrides the
time_zonerequest parameter. -
approximationEsqlApproximation -
Enables query approximation if possible for the query.
false(the default) disables query approximation andtrueenables it with default settings. A map value enables query approximation with custom settings. -
column_metadataboolean | string Stringifiedboolean · default: false -
When enabled, column metadata is added to the query response as additional
_metaproperties. Currently, only_meta.bucketis added for columns corresponding to theBUCKETfunction, containing the bucket interval and unit for queries where it can be determined.
Response
-
tookDurationValueUnitMillis -
is_partialboolean -
all_columnsEsqlColumnInfo -
valuesFieldValuerequired -
_clustersEsqlClusterInfo -
Cross-cluster search information. Present if
include_ccs_metadatawastruein the request and a cross-cluster search was performed. -
totalnumberrequired -
successfulnumberrequired -
runningnumberrequired -
skippednumberrequired -
partialnumberrequired -
failednumberrequired -
detailsmap string to EsqlClusterDetailsrequired -
<string>EsqlClusterDetails -
statusEsqlClusterStatusrequired -
Values:
runningsuccessfulpartialskippedfailed -
indicesstringrequired -
tookDurationValueUnitMillis -
_shardsEsqlShardInfo -
totalnumberrequired -
successfulnumber -
skippednumber -
failednumber -
failuresEsqlShardFailure -
shardnumberrequired -
indexIndexName | stringrequired nullable -
nodestring -
reasonErrorCauserequired -
typestringrequired -
The type of error
-
reasonstringnullable -
A human-readable explanation of the error, in English.
-
stack_tracestring -
The server stack trace. Present only if the
error_trace=trueparameter was sent with the request. -
caused_byErrorCause -
root_causeErrorCause -
suppressedErrorCause -
profileobject -
Profiling information. Present if
profilewastruein the request. The contents of this field are currently unstable. -
idstring -
The ID of the async query, to be used in subsequent requests to check the status or retrieve results.
Also available in the
X-Elasticsearch-Async-IdHTTP header. -
is_runningbooleanrequired -
Indicates whether the async query is still running or has completed.
Also available in the
X-Elasticsearch-Async-Is-RunningHTTP header.