123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- [[search-multi-search]]
- == Multi Search API
- The multi search API allows to execute several search requests within
- the same API. The endpoint for it is `_msearch`.
- The format of the request is similar to the bulk API format, and the
- structure is as follows (the structure is specifically optimized to
- reduce parsing if a specific search ends up redirected to another node):
- [source,js]
- --------------------------------------------------
- header\n
- body\n
- header\n
- body\n
- --------------------------------------------------
- The header part includes which index / indices to search on, optional
- (mapping) types to search on, the `search_type`, `preference`, and
- `routing`. The body includes the typical search body request (including
- the `query`, `aggregations`, `from`, `size`, and so on). Here is an example:
- [source,js]
- --------------------------------------------------
- $ cat requests
- {"index" : "test"}
- {"query" : {"match_all" : {}}, "from" : 0, "size" : 10}
- {"index" : "test", "search_type" : "dfs_query_then_fetch"}
- {"query" : {"match_all" : {}}}
- {}
- {"query" : {"match_all" : {}}}
- {"query" : {"match_all" : {}}}
- {"search_type" : "dfs_query_then_fetch"}
- {"query" : {"match_all" : {}}}
- $ curl -XGET localhost:9200/_msearch --data-binary "@requests"; echo
- --------------------------------------------------
- Note, the above includes an example of an empty header (can also be just
- without any content) which is supported as well.
- The response returns a `responses` array, which includes the search
- response for each search request matching its order in the original
- multi search request. If there was a complete failure for that specific
- search request, an object with `error` message will be returned in place
- of the actual search response.
- The endpoint allows to also search against an index/indices and
- type/types in the URI itself, in which case it will be used as the
- default unless explicitly defined otherwise in the header. For example:
- [source,js]
- --------------------------------------------------
- $ cat requests
- {}
- {"query" : {"match_all" : {}}, "from" : 0, "size" : 10}
- {}
- {"query" : {"match_all" : {}}}
- {"index" : "test2"}
- {"query" : {"match_all" : {}}}
- $ curl -XGET localhost:9200/test/_msearch --data-binary @requests; echo
- --------------------------------------------------
- The above will execute the search against the `test` index for all the
- requests that don't define an index, and the last one will be executed
- against the `test2` index.
- The `search_type` can be set in a similar manner to globally apply to
- all search requests.
- [float]
- [[msearch-security]]
- === Security
- See <<url-access-control>>
|