---
type: api
title: Executes several fleet searches with a single API request
description: **All methods and paths for this operation:**
url: https://www.elastic.co/elastic/docs-builder/docs/4371/api/doc/elasticsearch/v8/operation/operation-fleet-msearch
resource: https://www.elastic.co/elastic/docs-builder/docs/4371/api/doc/elasticsearch/v8/operation/operation-fleet-msearch
products:
  - Elasticsearch
---

# Executes several fleet searches with a single API request


Availability: 7.16+

## Paths

- `POST` (also `GET`) `/{index}/_fleet/_fleet_msearch`
- `POST` (also `GET`) `/_fleet/_fleet_msearch`

- [Api key auth](/elastic/docs-builder/docs/4371/api/doc/elasticsearch/v8/authentication#apikeyauth)
- [Basic auth](/elastic/docs-builder/docs/4371/api/doc/elasticsearch/v8/authentication#basicauth)
- [Bearer auth](/elastic/docs-builder/docs/4371/api/doc/elasticsearch/v8/authentication#bearerauth)

#### Path Parameters

- `index` (union IndexName | IndexAlias) — optional, leave it out to use `/_fleet/_fleet_msearch`
  A single target to search. If the target is an index alias, it must resolve to a single index.

## Description

The API follows the same structure as the multi search (`_msearch`) API.
However, similar to the fleet search API, it supports the `wait_for_checkpoints` parameter.

## Required authorization

* Index privileges: `read`

[Read the reference documentation](https://www.elastic.co/guide/en/elasticsearch/reference/8.19/search-multi-search.html)

## Query String Parameters

- `allow_no_indices` (boolean)
  If false, the request returns an error if any wildcard expression, index alias, or _all value targets only missing or closed indices. This behavior applies even if the request targets other open indices. For example, a request targeting foo*,bar* returns an error if an index starts with foo but no index starts with bar.
- `ccs_minimize_roundtrips` (boolean · default: true)
  If true, network roundtrips between the coordinating node and remote clusters are minimized for cross-cluster search requests.
- `expand_wildcards` (union ExpandWildcards)
  Type of index that wildcard expressions can match. If the request can target data streams, this argument determines whether wildcard expressions match hidden data streams.

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`
- `ignore_throttled` (boolean · default: false)
  If true, concrete, expanded or aliased indices are ignored when frozen.
- `ignore_unavailable` (boolean · default: false)
  If true, missing or closed indices are not included in the response.
- `max_concurrent_searches` (number)
  Maximum number of concurrent searches the multi search API can execute.
- `max_concurrent_shard_requests` (number · default: 5)
  Maximum number of concurrent shard requests that each sub-search request executes per node.
- `pre_filter_shard_size` (number)
  Defines a threshold that enforces a pre-filter roundtrip to prefilter search shards based on query rewriting if the number of shards the search request expands to exceeds the threshold. This filter roundtrip can limit the number of shards significantly if for instance a shard can not match any documents based on its rewrite method i.e., if date filters are mandatory to match but the shard bounds and the query are disjoint.
- `search_type` (enum SearchType)
  Indicates whether global term and document frequencies should be used when scoring returned documents.

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`
- `rest_total_hits_as_int` (boolean · default: false)
  If true, hits.total are returned as an integer in the response. Defaults to false, which returns an object.
- `typed_keys` (boolean)
  Specifies whether aggregation and suggester names should be prefixed by their respective types in the response.
- `wait_for_checkpoints` ([] number · default: [])
  A comma separated list of checkpoints. When configured, the search API will only be executed on a shard
after the relevant checkpoint has become visible for search. Defaults to an empty list which will cause
Elasticsearch to immediately execute the search.
- `allow_partial_search_results` (boolean)
  If true, returns partial results if there are shard request timeouts or shard failures.
If false, returns an error with no partial results.
Defaults to the configured cluster setting `search.default_allow_partial_results` which is true by default.

## Request Body

`application/json`

An array; each item is one of:
- **MultisearchHeader**
  Contains parameters used to limit or change the subsequent search body request.
  - `allow_no_indices` (boolean) — optional
  - `expand_wildcards` (string ExpandWildcards) — optional
    

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`
  - `ignore_unavailable` (boolean) — optional
  - `index` (string Indices) — optional
  - `preference` (string) — optional
  - `request_cache` (boolean) — optional
  - `routing` (string Routing) — optional
  - `search_type` (enum SearchType) — optional
    

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`
  - `ccs_minimize_roundtrips` (boolean) — optional
  - `allow_partial_search_results` (boolean) — optional
  - `ignore_throttled` (boolean) — optional
- **MultisearchBody**
  - `aggregations` (map string to {} AggregationContainer) — optional
    See [AggregationContainer](https://www.elastic.co/elastic/docs-builder/docs/4371/api/doc/elasticsearch/v8/types/_types-aggregations-aggregationcontainer)
  - `collapse` ({} FieldCollapse) — optional
    - `field` (string Field) — required
      The field to collapse the result set on
    - `inner_hits` (union oneOf) — optional
      The number of inner hits and their sort order
      `InnerHits` or `InnerHits[]`
      - `name` (string Name) — 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` ({} FieldCollapse) — optional — recursive
        Same fields as `collapse` in `MultisearchBody`
      - `docvalue_fields` ([] FieldAndFormat) — optional
        - `field` (string Field) — 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` ({} Highlight) — optional
        - `type` (HighlighterType) — 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 BoundaryScanner) — 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 HighlighterFragmenter · 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` ({} QueryContainer) — 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 [QueryContainer](https://www.elastic.co/elastic/docs-builder/docs/4371/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 HighlighterOrder · 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 HighlighterTagsSchema) — optional
          Set to `styled` to use the built-in tag schema.
          Values: `styled`
        - `encoder` (enum HighlighterEncoder) — optional
          Values: `default`, `html`
        - `fields` (map string to HighlightField) — required
          Map values ({} HighlightField)
          - `type` (HighlighterType) — 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 BoundaryScanner) — 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 HighlighterFragmenter · 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` ({} QueryContainer) — 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 [QueryContainer](https://www.elastic.co/elastic/docs-builder/docs/4371/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 HighlighterOrder · 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 HighlighterTagsSchema) — optional
            Set to `styled` to use the built-in tag schema.
            Values: `styled`
          - `fragment_offset` (number) — optional
          - `matched_fields` (string Fields) — optional
      - `ignore_unmapped` (boolean) — optional
      - `script_fields` (map string to ScriptField) — optional
        Map values ({} ScriptField)
        - `script` (string Script) — required
        - `ignore_failure` (boolean) — optional
      - `seq_no_primary_term` (boolean) — optional
      - `fields` ([] string Field) — optional
      - `sort` (Sort) — optional
        How the inner hits should be sorted per `inner_hits`.
By default, inner hits are sorted by score.
      - `_source` (SourceConfig) — optional
      - `stored_fields` (string Fields) — 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` ({} FieldCollapse) — optional — recursive
      Same fields as `collapse` in `MultisearchBody`
  - `query` ({} QueryContainer) — optional
    Defines the search definition using the Query DSL.
    See [QueryContainer](https://www.elastic.co/elastic/docs-builder/docs/4371/api/doc/elasticsearch/v8/types/_types-query_dsl-querycontainer)
  - `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.
  - `stored_fields` (string Fields) — 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.
  - `docvalue_fields` ([] FieldAndFormat) — 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 Field) — 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.
    `KnnSearch` or `KnnSearch[]`
    - `field` (string Field) — required
      The name of the vector field to search against
    - `query_vector` (QueryVector) — optional
      The query vector
    - `query_vector_builder` ({} QueryVectorBuilder) — optional
      The query vector builder. You must provide a query_vector_builder or query_vector, but not both.
      - `text_embedding` ({} TextEmbedding) — 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: [`QueryContainer[]`](https://www.elastic.co/elastic/docs-builder/docs/4371/api/doc/elasticsearch/v8/types/_types-query_dsl-querycontainer) or [`QueryContainer`](https://www.elastic.co/elastic/docs-builder/docs/4371/api/doc/elasticsearch/v8/types/_types-query_dsl-querycontainer)
      See [QueryContainer](https://www.elastic.co/elastic/docs-builder/docs/4371/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` ({} InnerHits) — optional
      If defined, each search hit will contain inner hits.
      - `name` (string Name) — 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` ({} FieldCollapse) — optional
        - `field` (string Field) — required
          The field to collapse the result set on
        - `inner_hits` (union oneOf) — optional — recursive
          The number of inner hits and their sort order
          `InnerHits` or `InnerHits[]`
        - `max_concurrent_group_searches` (number) — optional
          The number of concurrent requests allowed to retrieve the inner_hits per group
        - `collapse` ({} FieldCollapse) — optional — recursive
          Same fields as `collapse` in `inner_hits`
      - `docvalue_fields` ([] FieldAndFormat) — optional
        - `field` (string Field) — 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` ({} Highlight) — optional
        Same fields as `highlight` in `inner_hits`
      - `ignore_unmapped` (boolean) — optional
      - `script_fields` (map string to ScriptField) — optional
        Map values ({} ScriptField)
        - `script` (string Script) — required
        - `ignore_failure` (boolean) — optional
      - `seq_no_primary_term` (boolean) — optional
      - `fields` ([] string Field) — optional
      - `sort` (Sort) — optional
        How the inner hits should be sorted per `inner_hits`.
By default, inner hits are sorted by score.
      - `_source` (SourceConfig) — optional
      - `stored_fields` (string Fields) — optional
      - `track_scores` (boolean · default: false) — optional
      - `version` (boolean) — optional
    - `rescore_vector` ({} RescoreVector) — 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
  - `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` ({} Highlight) — optional
    Same fields as `highlight` in `inner_hits`
  - `indices_boost` ([] string to number) — optional
    Boosts the _score of documents from specified indices.
  - `min_score` (number) — optional
    The minimum `_score` for matching documents.
Documents with a lower `_score` are not included in search results and results collected by aggregations.
  - `post_filter` ({} QueryContainer) — optional
    See [QueryContainer](https://www.elastic.co/elastic/docs-builder/docs/4371/api/doc/elasticsearch/v8/types/_types-query_dsl-querycontainer)
  - `profile` (boolean) — optional
  - `rescore` (union oneOf) — optional
    `Rescore` or `Rescore[]`
    - `window_size` (number) — optional
    - `query` ({} RescoreQuery) — optional
      - `rescore_query` ({} QueryContainer) — 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 [QueryContainer](https://www.elastic.co/elastic/docs-builder/docs/4371/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 ScoreMode · 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` ({} LearningToRank) — 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 ScriptField) — optional
    Retrieve a script evaluation (based on different fields) for each hit.
    Map values ({} ScriptField)
    - `script` (string Script) — required
    - `ignore_failure` (boolean) — optional
  - `search_after` (SortResults) — 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.
  - `sort` (Sort) — optional
  - `_source` (SourceConfig) — optional
    Indicates which source fields are returned for matching documents. These
fields are returned in the hits._source property of the search response.
  - `fields` ([] FieldAndFormat) — 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 Field) — 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
  - `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.
  - `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.
  - `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.
  - `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.
  - `version` (boolean · default: false) — optional
    If true, returns document version as part of a hit.
  - `runtime_mappings` (RuntimeFields) — optional
    Defines one or more runtime fields in the search request. These fields take
precedence over mapped fields with the same name.
  - `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.
  - `pit` ({} PointInTimeReference) — 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 Id) — required
    - `keep_alive` (string Duration) — optional
  - `suggest` ({} Suggester) — optional
    - `text` (string) — optional
      Global suggest text, to avoid repetition when the same text is used in several suggesters

## Response

`application/json`

- `docs` ([] union ResponseItem)
  - **MultiSearchItem**
    - `took` (number)
      The number of milliseconds it took Elasticsearch to run the request.
This value is calculated by measuring the time elapsed between receipt of a request on the coordinating node and the time at which the coordinating node is ready to send the response.
It includes:

* Communication time between the coordinating node and data nodes
* Time the request spends in the search thread pool, queued for execution
* Actual run time

It does not include:

* Time needed to send the request to Elasticsearch
* Time needed to serialize the JSON response
* Time needed to send the response to a client
    - `timed_out` (boolean)
      If `true`, the request timed out before completion; returned results may be partial or empty.
    - `_shards` ({} ShardStatistics)
      A count of shards used for the request.
      - `failed` (number uint)
        The number of shards the operation or search attempted to run on but failed.
      - `successful` (number uint)
        The number of shards the operation or search succeeded on.
      - `total` (number uint)
        The number of shards the operation or search will run on overall.
      - `failures` ([] ShardFailure)
        - `index` (string IndexName)
        - `node` (string)
        - `reason` ({} ErrorCause)
          - `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` ({} ErrorCause) — recursive
            Same fields as `reason` in `failures`
          - `root_cause` ([] ErrorCause) — recursive
            Same fields as `reason` in `failures`
          - `suppressed` ([] ErrorCause) — recursive
            Same fields as `reason` in `failures`
        - `shard` (number)
        - `status` (string)
        - `primary` (boolean)
      - `skipped` (number uint)
    - `hits` ({} HitsMetadata)
      The returned documents and metadata.
      - `total` (union oneOf)
        Total hit count information, present only if `track_total_hits` wasn't `false` in the search request.
        - **TotalHits**
          - `relation` (enum TotalHitsRelation)
            

Supported values include:
  - `eq`: Accurate
  - `gte`: Lower bound, including returned events or sequences
            Values: `eq`, `gte`
          - `value` (number)
        - **number**
      - `hits` ([] Hit)
        - `_index` (string IndexName)
        - `_id` (string Id)
        - `_score` (union number | string) — nullable
        - `_explanation` ({} Explanation)
          - `description` (string)
          - `details` ([] ExplanationDetail)
            - `description` (string)
            - `details` ([] ExplanationDetail) — 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 InnerHitsResult)
          Map values ({} InnerHitsResult)
          - `hits` ({} HitsMetadata) — recursive
            Same fields as `hits` in `MultiSearchItem`
        - `matched_queries` (union oneOf)
          One of: `string[]` or `string to number`
        - `_nested` ({} NestedIdentity)
          - `field` (string Field)
          - `offset` (number)
          - `_nested` ({} NestedIdentity) — recursive
            Same fields as `_nested` in `hits`
        - `_ignored` ([] string)
        - `ignored_field_values` (map string to FieldValue)
        - `_shard` (string)
        - `_node` (string)
        - `_routing` (string)
        - `_source` (object)
        - `_rank` (number)
        - `_seq_no` (number SequenceNumber)
        - `_primary_term` (number)
        - `_version` (number VersionNumber)
        - `sort` (SortResults)
      - `max_score` (union number | string) — nullable
    - `aggregations` (map string to {} Aggregate)
      See [Aggregate](https://www.elastic.co/elastic/docs-builder/docs/4371/api/doc/elasticsearch/v8/types/_types-aggregations-aggregate)
    - `_clusters` ({} ClusterStatistics)
      - `skipped` (number)
      - `successful` (number)
      - `total` (number)
      - `running` (number)
      - `partial` (number)
      - `failed` (number)
      - `details` (map string to ClusterDetails)
        Map values ({} ClusterDetails)
        - `status` (enum ClusterSearchStatus)
          Values: `running`, `successful`, `partial`, `skipped`, `failed`
        - `indices` (string)
        - `took` (DurationValueUnitMillis)
        - `timed_out` (boolean)
        - `_shards` ({} ShardStatistics)
          Same fields as `_shards` in `MultiSearchItem`
        - `failures` ([] ShardFailure)
          Same fields as `failures` in `_shards`
    - `fields` (map string to object)
    - `max_score` (number)
    - `num_reduce_phases` (number)
    - `profile` ({} Profile)
      - `shards` ([] ShardProfile)
        - `aggregations` ([] AggregationProfile)
          - `breakdown` ({} AggregationBreakdown)
            - `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` (DurationValueUnitNanos)
          - `type` (string)
          - `debug` ({} AggregationProfileDebug)
            - `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` ({} AggregationProfileDebug) — 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` ([] AggregationProfileDelegateDebugFilter)
              - `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` ([] AggregationProfile) — recursive
            Same fields as `aggregations` in `shards`
        - `cluster` (string)
        - `dfs` ({} DfsProfile)
          - `statistics` ({} DfsStatisticsProfile)
            - `type` (string)
            - `description` (string)
            - `time` (string Duration)
            - `time_in_nanos` (DurationValueUnitNanos)
            - `breakdown` ({} DfsStatisticsBreakdown)
              - `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` ([] DfsStatisticsProfile) — recursive
              Same fields as `statistics` in `dfs`
          - `knn` ([] DfsKnnProfile)
            - `vector_operations_count` (number)
            - `query` ([] KnnQueryProfileResult)
              - `type` (string)
              - `description` (string)
              - `time` (string Duration)
              - `time_in_nanos` (DurationValueUnitNanos)
              - `breakdown` ({} KnnQueryProfileBreakdown)
                - `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` ([] KnnQueryProfileResult) — recursive
                Same fields as `query` in `knn`
            - `rewrite_time` (number)
            - `collector` ([] KnnCollectorResult)
              - `name` (string)
              - `reason` (string)
              - `time` (string Duration)
              - `time_in_nanos` (DurationValueUnitNanos)
              - `children` ([] KnnCollectorResult) — recursive
                Same fields as `collector` in `knn`
        - `fetch` ({} FetchProfile)
          - `type` (string)
          - `description` (string)
          - `time_in_nanos` (DurationValueUnitNanos)
          - `breakdown` ({} FetchProfileBreakdown)
            - `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` ({} FetchProfileDebug)
            - `stored_fields` ([] string)
            - `fast_path` (number)
          - `children` ([] FetchProfile) — recursive
            Same fields as `fetch` in `shards`
        - `id` (string)
        - `index` (string IndexName)
        - `node_id` (string)
        - `searches` ([] SearchProfile)
          - `collector` ([] Collector)
            - `name` (string)
            - `reason` (string)
            - `time_in_nanos` (DurationValueUnitNanos)
            - `children` ([] Collector) — recursive
              Same fields as `collector` in `searches`
          - `query` ([] QueryProfile)
            - `breakdown` ({} QueryBreakdown)
              - `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` (DurationValueUnitNanos)
            - `type` (string)
            - `children` ([] QueryProfile) — recursive
              Same fields as `query` in `searches`
          - `rewrite_time` (number)
        - `shard_id` (number)
    - `pit_id` (string Id)
    - `_scroll_id` (string ScrollId)
      The identifier for the search and its search context.
You can use this scroll ID with the scroll API to retrieve the next batch of search results for the request.
This property is returned only if the `scroll` query parameter is specified in the request.
    - `suggest` (map string to Suggest)
    - `terminated_early` (boolean)
    - `status` (number)
  - **ErrorResponseBase**
    The response returned by Elasticsearch when request execution did not succeed.
    - `error` ({} ErrorCause)
      - `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` ({} ErrorCause) — recursive
        Same fields as `error` in `ErrorResponseBase`
      - `root_cause` ([] ErrorCause) — recursive
        Same fields as `error` in `ErrorResponseBase`
      - `suppressed` ([] ErrorCause) — recursive
        Same fields as `error` in `ErrorResponseBase`
    - `status` (number)
## Code Examples

#### Console

```console
POST /{index}/_fleet/_fleet_msearch
```

#### curl

```curl
curl -X POST "/{index}/_fleet/_fleet_msearch"
```

