---
type: api
title: Run an async search
description: **All methods and paths for this operation:**
url: https://www.elastic.co/elastic/docs-builder/docs/4493/api/doc/elasticsearch/v8/operation/operation-async-search-submit
resource: https://www.elastic.co/elastic/docs-builder/docs/4493/api/doc/elasticsearch/v8/operation/operation-async-search-submit
products:
  - Elasticsearch
---

# Run an async search


Availability: Generally available since 7.7

## Paths

- `POST` `/{index}/_async_search`
- `POST` `/_async_search`

#### Path parameters

- `index` (union string | string[]) — optional, leave it out to use `/_async_search`
  A comma-separated list of index names to search; use `_all` or empty string to perform the operation on all indices

## Description

When the primary sort of the results is an indexed field, shards get sorted based on minimum and maximum value that they hold for that field. Partial results become available following the sort criteria that was requested.

Warning: Asynchronous search does not support scroll or search requests that include only the suggest section.

By default, Elasticsearch does not allow you to store an async search response larger than 10Mb and an attempt to do this results in an error.
The maximum allowed size for a stored async search response can be set by changing the `search.max_async_search_response_size` cluster level setting.

## Authentication

- Api key: `Authorization: <value>`
  Elasticsearch APIs support key-based authentication.
  You must create an API key and use the encoded value in the request header.
  For example:
  
  
  ```
  curl -X GET "${ES_URL}/_cat/indices?v=true" \
    -H "Authorization: ApiKey ${API_KEY}"
  ```
  
  To get API keys, use the `/_security/api_key` APIs.
- Basic: `Authorization: Basic <credentials>`
- Bearer: `Authorization: Bearer <token>`
  Elasticsearch APIs support the use of bearer tokens in the `Authorization` HTTP header to authenticate with the API.
  For examples, refer to [Token-based authentication services](https://www.elastic.co/guide/en/elasticsearch/reference/current/token-authentication-services.html)

## Query string parameters

- `wait_for_completion_timeout` (string · default: 1s) — optional
  Blocks and waits until the search is completed up to a certain timeout.
When the async search completes within the timeout, the response won’t include the ID as the results are not stored in the cluster.
- `keep_alive` (string · default: 5d) — optional
  Specifies how long the async search needs to be available.
Ongoing async searches and any saved search results are deleted after this period.
- `keep_on_completion` (boolean · default: false) — optional
  If `true`, results are stored for later retrieval when the search completes within the `wait_for_completion_timeout`.
- `allow_no_indices` (boolean) — optional
  Whether to ignore if a wildcard indices expression resolves into no concrete indices.
(This includes `_all` string or when no indices have been specified)
- `allow_partial_search_results` (boolean · default: true) — optional
  Indicate if an error should be returned if there is a partial search failure or timeout
- `analyzer` (string) — optional
  The analyzer to use for the query string
- `analyze_wildcard` (boolean · default: false) — optional
  Specify whether wildcard and prefix queries should be analyzed
- `batched_reduce_size` (number · default: 5) — optional
  Affects how often partial results become available, which happens whenever shard results are reduced.
A partial reduction is performed every time the coordinating node has received a certain number of new shard responses (5 by default).
- `ccs_minimize_roundtrips` (boolean · default: false) — optional
  The default value is the only supported value.
- `default_operator` (enum · default: or) — optional
  The default operator for query string query (AND or OR)
  Values: `and`, `AND`, `or`, `OR`
- `df` (string) — optional
  The field to use as default where no field prefix is given in the query string
- `docvalue_fields` (union oneOf) — optional
  A comma-separated list of fields to return as the docvalue representation of a field for each hit
  One of: `string[]` or `string`
- `expand_wildcards` (string · default: open) — optional
  Whether to expand wildcard expression to concrete indices that are open, closed or both

Supported values include:
  - `all`: Match any data stream or index, including hidden ones.
  - `open`: Match open, non-hidden indices. Also matches any non-hidden data stream.
  - `closed`: Match closed, non-hidden indices. Also matches any non-hidden data stream. Data streams cannot be closed.
  - `hidden`: Match hidden data streams and hidden indices. Must be combined with `open`, `closed`, or `both`.
  - `none`: Wildcard expressions are not accepted.
  Values: `all`, `open`, `closed`, `hidden`, `none`
- `explain` (boolean) — optional
  Specify whether to return detailed information about score computation as part of a hit
- `ignore_throttled` (boolean) — optional
  Whether specified concrete, expanded or aliased indices should be ignored when throttled
- `ignore_unavailable` (boolean) — optional
  Whether specified concrete indices should be ignored when unavailable (missing or closed)
- `lenient` (boolean) — optional
  Specify whether format-based query failures (such as providing text to a numeric field) should be ignored
- `max_concurrent_shard_requests` (number · default: 5) — optional
  The number of concurrent shard requests per node this search executes concurrently.
This value should be used to limit the impact of the search on the cluster in order to limit the number of concurrent shard requests
- `preference` (string · default: random) — optional
  Specify the node or shard the operation should be performed on
- `request_cache` (boolean · default: true) — optional
  Specify if request cache should be used for this request or not, defaults to true
- `routing` (string) — optional
  A comma-separated list of specific routing values
- `search_type` (enum) — optional
  Search operation type

Supported values include:
  - `query_then_fetch`: Documents are scored using local term and document frequencies for the shard. This is usually faster but less accurate.
  - `dfs_query_then_fetch`: Documents are scored using global term and document frequencies across all shards. This is usually slower but more accurate.
  Values: `query_then_fetch`, `dfs_query_then_fetch`
- `stats` (string[]) — optional
  Specific 'tag' of the request for logging and statistical purposes
- `stored_fields` (union oneOf) — optional
  A comma-separated list of stored fields to return as part of a hit
  One of: `string[]` or `string`
- `suggest_field` (string) — optional
  Specifies which field to use for suggestions.
- `suggest_mode` (enum · default: missing) — optional
  Specify suggest mode

Supported values include:
  - `missing`: Only generate suggestions for terms that are not in the shard.
  - `popular`: Only suggest terms that occur in more docs on the shard than the original term.
  - `always`: Suggest any matching suggestions based on terms in the suggest text.
  Values: `missing`, `popular`, `always`
- `suggest_size` (number) — optional
  How many suggestions to return in response
- `suggest_text` (string) — optional
  The source text for which the suggestions should be returned.
- `terminate_after` (number) — optional
  The maximum number of documents to collect for each shard, upon reaching which the query execution will terminate early
- `timeout` (string) — optional
  Explicit operation timeout
- `track_total_hits` (boolean | number) — optional
  Indicate if the number of documents that match the query should be tracked.
A number can also be specified, to accurately track the total hit count up to the number.
- `track_scores` (boolean) — optional
  Whether to calculate and return scores even if they are not used for sorting
- `typed_keys` (boolean) — optional
  Specify whether aggregation and suggester names should be prefixed by their respective types in the response
- `rest_total_hits_as_int` (boolean · default: false) — optional
  Indicates whether hits.total should be rendered as an integer or an object in the rest search response
- `version` (boolean) — optional
  Specify whether to return document version as part of a hit
- `_source` (union oneOf) — optional
  True or false to return the _source field or not, or a list of fields to return
  One of: `boolean` or `string`
- `_source_excludes` (union oneOf) — optional
  A list of fields to exclude from the returned _source field
  One of: `string[]` or `string`
- `_source_includes` (union oneOf) — optional
  A list of fields to extract and return from the _source field
  One of: `string[]` or `string`
- `seq_no_primary_term` (boolean) — optional
  Specify whether to return sequence number and primary term of the last modification of each hit
- `q` (string) — optional
  Query in the Lucene query string syntax
- `size` (number · default: 10) — optional
  Number of hits to return
- `from` (number · default: 0) — optional
  Starting offset
- `sort` (union string | string[]) — optional
  A comma-separated list of <field>:<direction> pairs

## Request body

`application/json`

- `aggregations` (map string to {} Aggregation) — optional
  See [Aggregation](https://www.elastic.co/elastic/docs-builder/docs/4493/api/doc/elasticsearch/v8/types/_types-aggregations-aggregationcontainer)
- `collapse` (object) — optional
  - `field` (string) — required
    The field to collapse the result set on
  - `inner_hits` (union oneOf) — optional
    The number of inner hits and their sort order
    `object` or `object[]`
    - `name` (string) — optional
      The name for the particular inner hit definition in the response.
Useful when a search request contains multiple inner hits.
    - `size` (number · default: 3) — optional
      The maximum number of hits to return per `inner_hits`.
    - `from` (number · default: 0) — optional
      Inner hit starting document offset.
    - `collapse` (object) — optional — recursive
      Same fields as `collapse`
    - `docvalue_fields` (object[]) — optional
      - `field` (string) — required
        A wildcard pattern. The request returns values for field names matching this pattern.
      - `format` (string) — optional
        The format in which the values are returned.
      - `include_unmapped` (boolean) — optional
    - `explain` (boolean) — optional
    - `highlight` (object) — optional
      - `type` (union) — optional
        

Supported values include:
  - `plain`: The `plain` highlighter uses the standard Lucene highlighter
  - `fvh`: The fvh highlighter uses the Lucene Fast Vector highlighter.
  - `unified`: The unified highlighter uses the Lucene Unified Highlighter.
        Values: `plain`, `fvh`, `unified`
      - `boundary_chars` (string · default: .,!? \t\n) — optional
        A string that contains each boundary character.
      - `boundary_max_scan` (number · default: 20) — optional
        How far to scan for boundary characters.
      - `boundary_scanner` (enum) — optional
        Specifies how to break the highlighted fragments: chars, sentence, or word.
Only valid for the unified and fvh highlighters.
Defaults to `sentence` for the `unified` highlighter. Defaults to `chars` for the `fvh` highlighter.

Supported values include:
  - `chars`: Use the characters specified by `boundary_chars` as highlighting boundaries.
The `boundary_max_scan` setting controls how far to scan for boundary characters.
Only valid for the `fvh` highlighter.
  - `sentence`: Break highlighted fragments at the next sentence boundary, as determined by Java’s `BreakIterator`.
You can specify the locale to use with `boundary_scanner_locale`.
When used with the `unified` highlighter, the `sentence` scanner splits sentences bigger than `fragment_size` at the first word boundary next to fragment_size.
You can set `fragment_size` to `0` to never split any sentence.
  - `word`: Break highlighted fragments at the next word boundary, as determined by Java’s `BreakIterator`.
You can specify the locale to use with `boundary_scanner_locale`.
        Values: `chars`, `sentence`, `word`
      - `boundary_scanner_locale` (string · default: Locale.ROOT) — optional
        Controls which locale is used to search for sentence and word boundaries.
This parameter takes a form of a language tag, for example: `"en-US"`, `"fr-FR"`, `"ja-JP"`.
      - `force_source` (boolean) — optional — deprecated
      - `fragmenter` (enum · default: span) — optional
        Specifies how text should be broken up in highlight snippets: `simple` or `span`.
Only valid for the `plain` highlighter.
        Values: `simple`, `span`
      - `fragment_size` (number · default: 100) — optional
        The size of the highlighted fragment in characters.
      - `highlight_filter` (boolean) — optional
      - `highlight_query` ({} Query) — optional
        Highlight matches for a query other than the search query.
This is especially useful if you use a rescore query because those are not taken into account by highlighting by default.
        See [Query](https://www.elastic.co/elastic/docs-builder/docs/4493/api/doc/elasticsearch/v8/types/_types-query_dsl-querycontainer)
      - `max_fragment_length` (number) — optional
      - `max_analyzed_offset` (number) — optional
        If set to a non-negative value, highlighting stops at this defined maximum limit.
The rest of the text is not processed, thus not highlighted and no error is returned
The `max_analyzed_offset` query setting does not override the `index.highlight.max_analyzed_offset` setting, which prevails when it’s set to lower value than the query setting.
      - `no_match_size` (number · default: 0) — optional
        The amount of text you want to return from the beginning of the field if there are no matching fragments to highlight.
      - `number_of_fragments` (number · default: 5) — optional
        The maximum number of fragments to return.
If the number of fragments is set to `0`, no fragments are returned.
Instead, the entire field contents are highlighted and returned.
This can be handy when you need to highlight short texts such as a title or address, but fragmentation is not required.
If `number_of_fragments` is `0`, `fragment_size` is ignored.
      - `options` (map string to object) — optional
      - `order` (enum · default: none) — optional
        Sorts highlighted fragments by score when set to `score`.
By default, fragments will be output in the order they appear in the field (order: `none`).
Setting this option to `score` will output the most relevant fragments first.
Each highlighter applies its own logic to compute relevancy scores.
        Values: `score`
      - `phrase_limit` (number · default: 256) — optional
        Controls the number of matching phrases in a document that are considered.
Prevents the `fvh` highlighter from analyzing too many phrases and consuming too much memory.
When using `matched_fields`, `phrase_limit` phrases per matched field are considered. Raising the limit increases query time and consumes more memory.
Only supported by the `fvh` highlighter.
      - `post_tags` (string[]) — optional
        Use in conjunction with `pre_tags` to define the HTML tags to use for the highlighted text.
By default, highlighted text is wrapped in `<em>` and `</em>` tags.
      - `pre_tags` (string[]) — optional
        Use in conjunction with `post_tags` to define the HTML tags to use for the highlighted text.
By default, highlighted text is wrapped in `<em>` and `</em>` tags.
      - `require_field_match` (boolean · default: true) — optional
        By default, only fields that contains a query match are highlighted.
Set to `false` to highlight all fields.
      - `tags_schema` (enum) — optional
        Set to `styled` to use the built-in tag schema.
        Values: `styled`
      - `encoder` (enum) — optional
        Values: `default`, `html`
      - `fields` (map string to object) — required
        Map values (object)
        - `type` (union) — optional
          

Supported values include:
  - `plain`: The `plain` highlighter uses the standard Lucene highlighter
  - `fvh`: The fvh highlighter uses the Lucene Fast Vector highlighter.
  - `unified`: The unified highlighter uses the Lucene Unified Highlighter.
          Values: `plain`, `fvh`, `unified`
        - `boundary_chars` (string · default: .,!? \t\n) — optional
          A string that contains each boundary character.
        - `boundary_max_scan` (number · default: 20) — optional
          How far to scan for boundary characters.
        - `boundary_scanner` (enum) — optional
          Specifies how to break the highlighted fragments: chars, sentence, or word.
Only valid for the unified and fvh highlighters.
Defaults to `sentence` for the `unified` highlighter. Defaults to `chars` for the `fvh` highlighter.

Supported values include:
  - `chars`: Use the characters specified by `boundary_chars` as highlighting boundaries.
The `boundary_max_scan` setting controls how far to scan for boundary characters.
Only valid for the `fvh` highlighter.
  - `sentence`: Break highlighted fragments at the next sentence boundary, as determined by Java’s `BreakIterator`.
You can specify the locale to use with `boundary_scanner_locale`.
When used with the `unified` highlighter, the `sentence` scanner splits sentences bigger than `fragment_size` at the first word boundary next to fragment_size.
You can set `fragment_size` to `0` to never split any sentence.
  - `word`: Break highlighted fragments at the next word boundary, as determined by Java’s `BreakIterator`.
You can specify the locale to use with `boundary_scanner_locale`.
          Values: `chars`, `sentence`, `word`
        - `boundary_scanner_locale` (string · default: Locale.ROOT) — optional
          Controls which locale is used to search for sentence and word boundaries.
This parameter takes a form of a language tag, for example: `"en-US"`, `"fr-FR"`, `"ja-JP"`.
        - `force_source` (boolean) — optional — deprecated
        - `fragmenter` (enum · default: span) — optional
          Specifies how text should be broken up in highlight snippets: `simple` or `span`.
Only valid for the `plain` highlighter.
          Values: `simple`, `span`
        - `fragment_size` (number · default: 100) — optional
          The size of the highlighted fragment in characters.
        - `highlight_filter` (boolean) — optional
        - `highlight_query` ({} Query) — optional
          Highlight matches for a query other than the search query.
This is especially useful if you use a rescore query because those are not taken into account by highlighting by default.
          See [Query](https://www.elastic.co/elastic/docs-builder/docs/4493/api/doc/elasticsearch/v8/types/_types-query_dsl-querycontainer)
        - `max_fragment_length` (number) — optional
        - `max_analyzed_offset` (number) — optional
          If set to a non-negative value, highlighting stops at this defined maximum limit.
The rest of the text is not processed, thus not highlighted and no error is returned
The `max_analyzed_offset` query setting does not override the `index.highlight.max_analyzed_offset` setting, which prevails when it’s set to lower value than the query setting.
        - `no_match_size` (number · default: 0) — optional
          The amount of text you want to return from the beginning of the field if there are no matching fragments to highlight.
        - `number_of_fragments` (number · default: 5) — optional
          The maximum number of fragments to return.
If the number of fragments is set to `0`, no fragments are returned.
Instead, the entire field contents are highlighted and returned.
This can be handy when you need to highlight short texts such as a title or address, but fragmentation is not required.
If `number_of_fragments` is `0`, `fragment_size` is ignored.
        - `options` (map string to object) — optional
        - `order` (enum · default: none) — optional
          Sorts highlighted fragments by score when set to `score`.
By default, fragments will be output in the order they appear in the field (order: `none`).
Setting this option to `score` will output the most relevant fragments first.
Each highlighter applies its own logic to compute relevancy scores.
          Values: `score`
        - `phrase_limit` (number · default: 256) — optional
          Controls the number of matching phrases in a document that are considered.
Prevents the `fvh` highlighter from analyzing too many phrases and consuming too much memory.
When using `matched_fields`, `phrase_limit` phrases per matched field are considered. Raising the limit increases query time and consumes more memory.
Only supported by the `fvh` highlighter.
        - `post_tags` (string[]) — optional
          Use in conjunction with `pre_tags` to define the HTML tags to use for the highlighted text.
By default, highlighted text is wrapped in `<em>` and `</em>` tags.
        - `pre_tags` (string[]) — optional
          Use in conjunction with `post_tags` to define the HTML tags to use for the highlighted text.
By default, highlighted text is wrapped in `<em>` and `</em>` tags.
        - `require_field_match` (boolean · default: true) — optional
          By default, only fields that contains a query match are highlighted.
Set to `false` to highlight all fields.
        - `tags_schema` (enum) — optional
          Set to `styled` to use the built-in tag schema.
          Values: `styled`
        - `fragment_offset` (number) — optional
        - `matched_fields` (string) — optional
    - `ignore_unmapped` (boolean) — optional
    - `script_fields` (map string to object) — optional
      Map values (object)
      - `script` (string) — required
      - `ignore_failure` (boolean) — optional
    - `seq_no_primary_term` (boolean) — optional
    - `fields` (string[]) — optional
    - `sort` (union) — optional
      How the inner hits should be sorted per `inner_hits`.
By default, inner hits are sorted by score.
    - `_source` (union) — optional
    - `stored_fields` (string) — optional
    - `track_scores` (boolean · default: false) — optional
    - `version` (boolean) — optional
  - `max_concurrent_group_searches` (number) — optional
    The number of concurrent requests allowed to retrieve the inner_hits per group
  - `collapse` (object) — optional — recursive
    Same fields as `collapse`
- `explain` (boolean · default: false) — optional
  If true, returns detailed information about score computation as part of a hit.
- `ext` (map string to object) — optional
  Configuration of search extensions defined by Elasticsearch plugins.
- `from` (number · default: 0) — optional
  Starting document offset. By default, you cannot page through more than 10,000
hits using the from and size parameters. To page through more hits, use the
search_after parameter.
- `highlight` (object) — optional
  Same fields as `highlight` in `inner_hits`
- `track_total_hits` (boolean | number) — optional
  Number of hits matching the query to count accurately. If true, the exact
number of hits is returned at the cost of some performance. If false, the
response does not include the total number of hits matching the query.
Defaults to 10,000 hits.
- `indices_boost` (string to number[]) — optional
  Boosts the _score of documents from specified indices.
- `docvalue_fields` (object[]) — optional
  Array of wildcard (*) patterns. The request returns doc values for field
names matching these patterns in the hits.fields property of the response.
  - `field` (string) — required
    A wildcard pattern. The request returns values for field names matching this pattern.
  - `format` (string) — optional
    The format in which the values are returned.
  - `include_unmapped` (boolean) — optional
- `knn` (union oneOf) — optional
  Defines the approximate kNN search to run.
  `object` or `object[]`
  - `field` (string) — required
    The name of the vector field to search against
  - `query_vector` (number[]) — optional
    The query vector
  - `query_vector_builder` (object) — optional
    The query vector builder. You must provide a query_vector_builder or query_vector, but not both.
    - `text_embedding` (object) — optional
      - `model_id` (string) — optional
        Model ID is required for all dense_vector fields but
may be inferred for semantic_text fields
      - `model_text` (string) — required
  - `k` (number) — optional
    The final number of nearest neighbors to return as top hits
  - `num_candidates` (number) — optional
    The number of nearest neighbor candidates to consider per shard
  - `boost` (number) — optional
    Boost value to apply to kNN scores
  - `filter` (union oneOf) — optional
    Filters for the kNN search query
    One of: [`Query[]`](https://www.elastic.co/elastic/docs-builder/docs/4493/api/doc/elasticsearch/v8/types/_types-query_dsl-querycontainer) or [`Query`](https://www.elastic.co/elastic/docs-builder/docs/4493/api/doc/elasticsearch/v8/types/_types-query_dsl-querycontainer)
    See [Query](https://www.elastic.co/elastic/docs-builder/docs/4493/api/doc/elasticsearch/v8/types/_types-query_dsl-querycontainer)
  - `similarity` (number) — optional
    The minimum similarity for a vector to be considered a match
  - `inner_hits` (object) — optional
    If defined, each search hit will contain inner hits.
    - `name` (string) — optional
      The name for the particular inner hit definition in the response.
Useful when a search request contains multiple inner hits.
    - `size` (number · default: 3) — optional
      The maximum number of hits to return per `inner_hits`.
    - `from` (number · default: 0) — optional
      Inner hit starting document offset.
    - `collapse` (object) — optional
      - `field` (string) — required
        The field to collapse the result set on
      - `inner_hits` (union oneOf) — optional — recursive
        The number of inner hits and their sort order
        `object` or `object[]`
      - `max_concurrent_group_searches` (number) — optional
        The number of concurrent requests allowed to retrieve the inner_hits per group
      - `collapse` (object) — optional — recursive
        Same fields as `collapse` in `inner_hits`
    - `docvalue_fields` (object[]) — optional
      - `field` (string) — required
        A wildcard pattern. The request returns values for field names matching this pattern.
      - `format` (string) — optional
        The format in which the values are returned.
      - `include_unmapped` (boolean) — optional
    - `explain` (boolean) — optional
    - `highlight` (object) — optional
      Same fields as `highlight` in `inner_hits`
    - `ignore_unmapped` (boolean) — optional
    - `script_fields` (map string to object) — optional
      Map values (object)
      - `script` (string) — required
      - `ignore_failure` (boolean) — optional
    - `seq_no_primary_term` (boolean) — optional
    - `fields` (string[]) — optional
    - `sort` (union) — optional
      How the inner hits should be sorted per `inner_hits`.
By default, inner hits are sorted by score.
    - `_source` (union) — optional
    - `stored_fields` (string) — optional
    - `track_scores` (boolean · default: false) — optional
    - `version` (boolean) — optional
  - `rescore_vector` (object) — optional
    Apply oversampling and rescoring to quantized vectors *
    - `oversample` (number) — required
      Applies the specified oversample factor to k on the approximate kNN search
  - `_name` (string) — optional
- `min_score` (number) — optional
  Minimum _score for matching documents. Documents with a lower _score are
not included in search results and results collected by aggregations.
- `post_filter` ({} Query) — optional
  See [Query](https://www.elastic.co/elastic/docs-builder/docs/4493/api/doc/elasticsearch/v8/types/_types-query_dsl-querycontainer)
- `profile` (boolean) — optional
- `query` ({} Query) — optional
  Defines the search definition using the Query DSL.
  See [Query](https://www.elastic.co/elastic/docs-builder/docs/4493/api/doc/elasticsearch/v8/types/_types-query_dsl-querycontainer)
- `rescore` (union oneOf) — optional
  `object` or `object[]`
  - `window_size` (number) — optional
  - `query` (object) — optional
    - `rescore_query` ({} Query) — required
      The query to use for rescoring.
This query is only run on the Top-K results returned by the `query` and `post_filter` phases.
      See [Query](https://www.elastic.co/elastic/docs-builder/docs/4493/api/doc/elasticsearch/v8/types/_types-query_dsl-querycontainer)
    - `query_weight` (number · default: 1) — optional
      Relative importance of the original query versus the rescore query.
    - `rescore_query_weight` (number · default: 1) — optional
      Relative importance of the rescore query versus the original query.
    - `score_mode` (enum · default: total) — optional
      Determines how scores are combined.

Supported values include:
  - `avg`: Average the original score and the rescore query score.
  - `max`: Take the max of original score and the rescore query score.
  - `min`: Take the min of the original score and the rescore query score.
  - `multiply`: Multiply the original score by the rescore query score.
Useful for `function` query rescores.
  - `total`: Add the original score and the rescore query score.
      Values: `avg`, `max`, `min`, `multiply`, `total`
  - `learning_to_rank` (object) — optional
    - `model_id` (string) — required
      The unique identifier of the trained model uploaded to Elasticsearch
    - `params` (map string to object) — optional
      Named parameters to be passed to the query templates used for feature
- `script_fields` (map string to object) — optional
  Retrieve a script evaluation (based on different fields) for each hit.
  Map values (object)
  - `script` (string) — required
  - `ignore_failure` (boolean) — optional
- `search_after` (union[]) — optional
- `size` (number · default: 10) — optional
  The number of hits to return. By default, you cannot page through more
than 10,000 hits using the from and size parameters. To page through more
hits, use the search_after parameter.
- `slice` (object) — optional
  - `field` (string) — optional
  - `id` (string) — required
  - `max` (number) — required
- `sort` (union) — optional
- `_source` (union) — optional
  Indicates which source fields are returned for matching documents. These
fields are returned in the hits._source property of the search response.
- `fields` (object[]) — optional
  Array of wildcard (*) patterns. The request returns values for field names
matching these patterns in the hits.fields property of the response.
  - `field` (string) — required
    A wildcard pattern. The request returns values for field names matching this pattern.
  - `format` (string) — optional
    The format in which the values are returned.
  - `include_unmapped` (boolean) — optional
- `suggest` (object) — optional
  - `text` (string) — optional
    Global suggest text, to avoid repetition when the same text is used in several suggesters
- `terminate_after` (number · default: 0) — optional
  Maximum number of documents to collect for each shard. If a query reaches this
limit, Elasticsearch terminates the query early. Elasticsearch collects documents
before sorting. Defaults to 0, which does not terminate query execution early.
- `timeout` (string) — optional
  Specifies the period of time to wait for a response from each shard. If no response
is received before the timeout expires, the request fails and returns an error.
Defaults to no timeout.
- `track_scores` (boolean · default: false) — optional
  If true, calculate and return document scores, even if the scores are not used for sorting.
- `version` (boolean · default: false) — optional
  If true, returns document version as part of a hit.
- `seq_no_primary_term` (boolean) — optional
  If true, returns sequence number and primary term of the last modification
of each hit. See Optimistic concurrency control.
- `stored_fields` (string) — optional
  List of stored fields to return as part of a hit. If no fields are specified,
no stored fields are included in the response. If this field is specified, the _source
parameter defaults to false. You can pass _source: true to return both source fields
and stored fields in the search response.
- `pit` (object) — optional
  Limits the search to a point in time (PIT). If you provide a PIT, you
cannot specify an <index> in the request path.
  - `id` (string) — required
  - `keep_alive` (string) — optional
- `runtime_mappings` (object) — optional
  Defines one or more runtime fields in the search request. These fields take
precedence over mapped fields with the same name.
- `stats` (string[]) — optional
  Stats groups to associate with the search. Each group maintains a statistics
aggregation for its associated searches. You can retrieve these stats using
the indices stats API.

## Response

`application/json`

- `id` (string)
- `is_partial` (boolean)
  When the query is no longer running, this property indicates whether the search failed or was successfully completed on all shards.
While the query is running, `is_partial` is always set to `true`.
- `is_running` (boolean)
  Indicates whether the search is still running or has completed.

> info
> If the search failed after some shards returned their results or the node that is coordinating the async search dies, results may be partial even though `is_running` is `false`.
- `expiration_time` (union)
  Indicates when the async search will expire.
- `expiration_time_in_millis` (number)
- `start_time` (union)
- `start_time_in_millis` (number)
- `completion_time` (union)
  Indicates when the async search completed.
It is present only when the search has completed.
- `completion_time_in_millis` (number)
- `error` (object)
  - `type` (string)
    The type of error
  - `reason` (union string) — nullable
    A human-readable explanation of the error, in English.
    One of: `string`
  - `stack_trace` (string)
    The server stack trace. Present only if the `error_trace=true` parameter was sent with the request.
  - `caused_by` (object) — recursive
    Same fields as `error`
  - `root_cause` (object[]) — recursive
    Same fields as `error`
  - `suppressed` (object[]) — recursive
    Same fields as `error`
- `response` (object)
  - `aggregations` (map string to {} Aggregation result)
    Partial aggregations results, coming from the shards that have already completed running the query.
    See [Aggregation result](https://www.elastic.co/elastic/docs-builder/docs/4493/api/doc/elasticsearch/v8/types/_types-aggregations-aggregate)
  - `_clusters` (object)
    - `skipped` (number)
    - `successful` (number)
    - `total` (number)
    - `running` (number)
    - `partial` (number)
    - `failed` (number)
    - `details` (map string to object)
      Map values (object)
      - `status` (enum)
        Values: `running`, `successful`, `partial`, `skipped`, `failed`
      - `indices` (string)
      - `took` (number)
      - `timed_out` (boolean)
      - `_shards` (object)
        - `failed` (number)
          The number of shards the operation or search attempted to run on but failed.
        - `successful` (number)
          The number of shards the operation or search succeeded on.
        - `total` (number)
          The number of shards the operation or search will run on overall.
        - `failures` (object[])
          - `index` (string)
          - `node` (string)
          - `reason` (object)
            - `type` (string)
              The type of error
            - `reason` (union string) — nullable
              A human-readable explanation of the error, in English.
              One of: `string`
            - `stack_trace` (string)
              The server stack trace. Present only if the `error_trace=true` parameter was sent with the request.
            - `caused_by` (object) — recursive
              Same fields as `reason` in `failures`
            - `root_cause` (object[]) — recursive
              Same fields as `reason` in `failures`
            - `suppressed` (object[]) — recursive
              Same fields as `reason` in `failures`
          - `shard` (number)
          - `status` (string)
          - `primary` (boolean)
        - `skipped` (number)
      - `failures` (object[])
        Same fields as `failures` in `_shards`
  - `fields` (map string to object)
  - `hits` (object)
    - `total` (union oneOf)
      Total hit count information, present only if `track_total_hits` wasn't `false` in the search request.
      - **{ relation, value }**
        - `relation` (enum)
          

Supported values include:
  - `eq`: Accurate
  - `gte`: Lower bound, including returned events or sequences
          Values: `eq`, `gte`
        - `value` (number)
      - **number**
    - `hits` (object[])
      - `_index` (string)
      - `_id` (string)
      - `_score` (union number | string) — nullable
      - `_explanation` (object)
        - `description` (string)
        - `details` (object[])
          - `description` (string)
          - `details` (object[]) — recursive
            Same fields as `details` in `_explanation`
          - `value` (number)
        - `value` (number)
      - `fields` (map string to object)
      - `highlight` (map string to string)
      - `inner_hits` (map string to object)
        Map values (object)
        - `hits` (object) — recursive
          Same fields as `hits` in `response`
      - `matched_queries` (union oneOf)
        One of: `string[]` or `string to number`
      - `_nested` (object)
        - `field` (string)
        - `offset` (number)
        - `_nested` (object) — recursive
          Same fields as `_nested` in `hits`
      - `_ignored` (string[])
      - `ignored_field_values` (map string to oneOf)
      - `_shard` (string)
      - `_node` (string)
      - `_routing` (string)
      - `_source` (object)
      - `_rank` (number)
      - `_seq_no` (number)
      - `_primary_term` (number)
      - `_version` (number)
      - `sort` (union[])
    - `max_score` (union number | string) — nullable
  - `max_score` (number)
  - `num_reduce_phases` (number)
    Indicates how many reductions of the results have been performed.
If this number increases compared to the last retrieved results for a get asynch search request, you can expect additional results included in the search response.
  - `profile` (object)
    - `shards` (object[])
      - `aggregations` (object[])
        - `breakdown` (object)
          - `build_aggregation` (number)
          - `build_aggregation_count` (number)
          - `build_leaf_collector` (number)
          - `build_leaf_collector_count` (number)
          - `collect` (number)
          - `collect_count` (number)
          - `initialize` (number)
          - `initialize_count` (number)
          - `post_collection` (number)
          - `post_collection_count` (number)
          - `reduce` (number)
          - `reduce_count` (number)
        - `description` (string)
        - `time_in_nanos` (number)
        - `type` (string)
        - `debug` (object)
          - `segments_with_multi_valued_ords` (number)
          - `collection_strategy` (string)
          - `segments_with_single_valued_ords` (number)
          - `total_buckets` (number)
          - `built_buckets` (number)
          - `result_strategy` (string)
          - `has_filter` (boolean)
          - `delegate` (string)
          - `delegate_debug` (object) — recursive
            Same fields as `debug` in `aggregations`
          - `chars_fetched` (number)
          - `extract_count` (number)
          - `extract_ns` (number)
          - `values_fetched` (number)
          - `collect_analyzed_ns` (number)
          - `collect_analyzed_count` (number)
          - `surviving_buckets` (number)
          - `ordinals_collectors_used` (number)
          - `ordinals_collectors_overhead_too_high` (number)
          - `string_hashing_collectors_used` (number)
          - `numeric_collectors_used` (number)
          - `empty_collectors_used` (number)
          - `deferred_aggregators` (string[])
          - `segments_with_doc_count_field` (number)
          - `segments_with_deleted_docs` (number)
          - `filters` (object[])
            - `results_from_metadata` (number)
            - `query` (string)
            - `specialized_for` (string)
            - `segments_counted_in_constant_time` (number)
          - `segments_counted` (number)
          - `segments_collected` (number)
          - `map_reducer` (string)
          - `brute_force_used` (number)
          - `dynamic_pruning_attempted` (number)
          - `dynamic_pruning_used` (number)
          - `skipped_due_to_no_data` (number)
        - `children` (object[]) — recursive
          Same fields as `aggregations` in `shards`
      - `cluster` (string)
      - `dfs` (object)
        - `statistics` (object)
          - `type` (string)
          - `description` (string)
          - `time` (string)
          - `time_in_nanos` (number)
          - `breakdown` (object)
            - `collection_statistics` (number)
            - `collection_statistics_count` (number)
            - `create_weight` (number)
            - `create_weight_count` (number)
            - `rewrite` (number)
            - `rewrite_count` (number)
            - `term_statistics` (number)
            - `term_statistics_count` (number)
          - `debug` (map string to object)
          - `children` (object[]) — recursive
            Same fields as `statistics` in `dfs`
        - `knn` (object[])
          - `vector_operations_count` (number)
          - `query` (object[])
            - `type` (string)
            - `description` (string)
            - `time` (string)
            - `time_in_nanos` (number)
            - `breakdown` (object)
              - `advance` (number)
              - `advance_count` (number)
              - `build_scorer` (number)
              - `build_scorer_count` (number)
              - `compute_max_score` (number)
              - `compute_max_score_count` (number)
              - `count_weight` (number)
              - `count_weight_count` (number)
              - `create_weight` (number)
              - `create_weight_count` (number)
              - `match` (number)
              - `match_count` (number)
              - `next_doc` (number)
              - `next_doc_count` (number)
              - `score` (number)
              - `score_count` (number)
              - `set_min_competitive_score` (number)
              - `set_min_competitive_score_count` (number)
              - `shallow_advance` (number)
              - `shallow_advance_count` (number)
            - `debug` (map string to object)
            - `children` (object[]) — recursive
              Same fields as `query` in `knn`
          - `rewrite_time` (number)
          - `collector` (object[])
            - `name` (string)
            - `reason` (string)
            - `time` (string)
            - `time_in_nanos` (number)
            - `children` (object[]) — recursive
              Same fields as `collector` in `knn`
      - `fetch` (object)
        - `type` (string)
        - `description` (string)
        - `time_in_nanos` (number)
        - `breakdown` (object)
          - `load_source` (number)
          - `load_source_count` (number)
          - `load_stored_fields` (number)
          - `load_stored_fields_count` (number)
          - `next_reader` (number)
          - `next_reader_count` (number)
          - `process_count` (number)
          - `process` (number)
        - `debug` (object)
          - `stored_fields` (string[])
          - `fast_path` (number)
        - `children` (object[]) — recursive
          Same fields as `fetch` in `shards`
      - `id` (string)
      - `index` (string)
      - `node_id` (string)
      - `searches` (object[])
        - `collector` (object[])
          - `name` (string)
          - `reason` (string)
          - `time_in_nanos` (number)
          - `children` (object[]) — recursive
            Same fields as `collector` in `searches`
        - `query` (object[])
          - `breakdown` (object)
            - `advance` (number)
            - `advance_count` (number)
            - `build_scorer` (number)
            - `build_scorer_count` (number)
            - `create_weight` (number)
            - `create_weight_count` (number)
            - `match` (number)
            - `match_count` (number)
            - `shallow_advance` (number)
            - `shallow_advance_count` (number)
            - `next_doc` (number)
            - `next_doc_count` (number)
            - `score` (number)
            - `score_count` (number)
            - `compute_max_score` (number)
            - `compute_max_score_count` (number)
            - `count_weight` (number)
            - `count_weight_count` (number)
            - `set_min_competitive_score` (number)
            - `set_min_competitive_score_count` (number)
          - `description` (string)
          - `time_in_nanos` (number)
          - `type` (string)
          - `children` (object[]) — recursive
            Same fields as `query` in `searches`
        - `rewrite_time` (number)
      - `shard_id` (number)
  - `pit_id` (string)
  - `_scroll_id` (string)
  - `_shards` (object)
    Indicates how many shards have run the query.
Note that in order for shard results to be included in the search response, they need to be reduced first.
    Same fields as `_shards` in `details`
  - `suggest` (map string to oneOf)
  - `terminated_early` (boolean)
  - `timed_out` (boolean)
  - `took` (number)
## Code examples

#### Console

```console
POST /sales*/_async_search?size=0
{
  "sort": [
    { "date": { "order": "asc" } }
  ],
  "aggs": {
    "sale_date": {
      "date_histogram": {
        "field": "date",
        "calendar_interval": "1d"
      }
    }
  }
}
```

#### JavaScript

```javascript
const response = await client.asyncSearch.submit({
  index: "sales*",
  size: 0,
  sort: [
    {
      date: {
        order: "asc",
      },
    },
  ],
  aggs: {
    sale_date: {
      date_histogram: {
        field: "date",
        calendar_interval: "1d",
      },
    },
  },
});
```

#### Python

```python
resp = client.async_search.submit(
    index="sales*",
    size="0",
    sort=[
        {
            "date": {
                "order": "asc"
            }
        }
    ],
    aggs={
        "sale_date": {
            "date_histogram": {
                "field": "date",
                "calendar_interval": "1d"
            }
        }
    },
)
```

#### curl

```curl
curl -X POST "$ELASTICSEARCH_URL/sales*/_async_search?size=0" \
  -H "Authorization: ApiKey $ELASTIC_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "sort": [
      {
        "date": {
          "order": "asc"
        }
      }
    ],
    "aggs": {
      "sale_date": {
        "date_histogram": {
          "field": "date",
          "calendar_interval": "1d"
        }
      }
    }
  }'
```

#### Java

```java
client.asyncSearch().submit(s -> s
    .aggregations("sale_date", a -> a
        .dateHistogram(d -> d
            .calendarInterval(CalendarInterval.Day)
            .field("date")
        )
    )
    .index("sales*")
    .size(0)
    .sort(so -> so
        .field(f -> f
            .field("date")
            .order(SortOrder.Asc)
        )
    )
,Void.class);
```

#### C#

```c#
var response = await client.AsyncSearch
    .SubmitAsync<MyDocument>(d1 => d1
        .Indices(new[] { "sales*" })
        .Aggregations(d2 => d2
            .Add("sale_date", d3 => d3
                .DateHistogram(d4 => d4
                    .CalendarInterval(CalendarInterval.Day)
                    .Field(x => x.Date)
                )
            )
        )
        .Sort(d2 => d2
            .Field(d3 => d3
                .Field(x => x.Date)
                .Order(SortOrder.Asc)
            )
        )
    );
```

#### PHP

```php
$resp = $client->asyncSearch()->submit([
    "index" => "sales*",
    "size" => "0",
    "body" => [
        "sort" => array(
            [
                "date" => [
                    "order" => "asc",
                ],
            ],
        ),
        "aggs" => [
            "sale_date" => [
                "date_histogram" => [
                    "field" => "date",
                    "calendar_interval" => "1d",
                ],
            ],
        ],
    ],
]);
```

#### Ruby

```ruby
response = client.async_search.submit(
  index: "sales*",
  size: "0",
  body: {
    "sort": [
      {
        "date": {
          "order": "asc"
        }
      }
    ],
    "aggs": {
      "sale_date": {
        "date_histogram": {
          "field": "date",
          "calendar_interval": "1d"
        }
      }
    }
  }
)
```

## Response examples

#### Async search submit response example1

A successful response when performing search asynchronously.

```json
{
  "id" : "FmRldE8zREVEUzA2ZVpUeGs2ejJFUFEaMkZ5QTVrSTZSaVN3WlNFVmtlWHJsdzoxMDc=",
  "is_partial" : true,
  "is_running" : true,
  "start_time_in_millis" : 1583945890986,
  "expiration_time_in_millis" : 1584377890986,
  "response" : {
    "took" : 1122,
    "timed_out" : false,
    "num_reduce_phases" : 0,
    "_shards" : {
      "total" : 562,
      "successful" : 3,
      "skipped" : 0,
      "failed" : 0
    },
    "hits" : {
      "total" : {
        "value" : 157483,
        "relation" : "gte"
      },
      "max_score" : null,
      "hits" : [ ]
    }
  }
}
```

