Run multiple templated searches Generally available; Added in 5.0.0
All methods and paths for this operation:
Run multiple templated searches with a single request. If you are providing a text file or text input to curl
, use the --data-binary
flag instead of -d
to preserve newlines. For example:
$ cat requests { "index": "my-index" } { "id": "my-search-template", "params": { "query_string": "hello world", "from": 0, "size": 10 }} { "index": "my-other-index" } { "id": "my-other-search-template", "params": { "query_type": "match_all" }} $ curl -H "Content-Type: application/x-ndjson" -XGET localhost:9200/_msearch/template --data-binary "@requests"; echo
Required authorization
- Index privileges:
read
Path parameters
-
A comma-separated list of data streams, indices, and aliases to search. It supports wildcards (
*
). To search all data streams and indices, omit this parameter or use*
.
Query parameters
-
If
true
, network round-trips are minimized for cross-cluster search requests. -
The maximum number of concurrent searches the API can run.
-
The type of the search operation.
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 are
query_then_fetch
ordfs_query_then_fetch
. -
If
true
, the response returnshits.total
as an integer. Iffalse
, it returnshits.total
as an object. -
If
true
, the response prefixes aggregation and suggester names with their respective types.
GET my-index/_msearch/template { } { "id": "my-search-template", "params": { "query_string": "hello world", "from": 0, "size": 10 }} { } { "id": "my-other-search-template", "params": { "query_type": "match_all" }}
resp = client.msearch_template( index="my-index", search_templates=[ {}, { "id": "my-search-template", "params": { "query_string": "hello world", "from": 0, "size": 10 } }, {}, { "id": "my-other-search-template", "params": { "query_type": "match_all" } } ], )
const response = await client.msearchTemplate({ index: "my-index", search_templates: [ {}, { id: "my-search-template", params: { query_string: "hello world", from: 0, size: 10, }, }, {}, { id: "my-other-search-template", params: { query_type: "match_all", }, }, ], });
response = client.msearch_template( index: "my-index", body: [ {}, { "id": "my-search-template", "params": { "query_string": "hello world", "from": 0, "size": 10 } }, {}, { "id": "my-other-search-template", "params": { "query_type": "match_all" } } ] )
$resp = $client->msearchTemplate([ "index" => "my-index", "body" => array( new ArrayObject([]), [ "id" => "my-search-template", "params" => [ "query_string" => "hello world", "from" => 0, "size" => 10, ], ], new ArrayObject([]), [ "id" => "my-other-search-template", "params" => [ "query_type" => "match_all", ], ], ), ]);
curl -X GET -H "Authorization: ApiKey $ELASTIC_API_KEY" -H "Content-Type: application/json" -d '[{},{"id":"my-search-template","params":{"query_string":"hello world","from":0,"size":10}},{},{"id":"my-other-search-template","params":{"query_type":"match_all"}}]' "$ELASTICSEARCH_URL/my-index/_msearch/template"
{ } { "id": "my-search-template", "params": { "query_string": "hello world", "from": 0, "size": 10 }} { } { "id": "my-other-search-template", "params": { "query_type": "match_all" }}