多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# Multi Search API **multi search API **允许在同一API中执行多个搜索请求。它的端点(**endpoint**)是**` _msearch`** 。 它的请求格式与 **multi API** 相似,结构如下(如果特定搜索最终重定向到另一个节点,则结构被特别优化以减少解析): | `header\n` `body\n` `header\n` `body\n` | **header** 分包括要搜索的 **index / indices ,可搜索的可选(mapping)types **,**search_type**,**` preference`** 和 **`routing`。** 正文包括典型的搜索正文请求(包括**` query`, `aggregations`, `from`, `size` **等)。 这里是一个例子: | `$ 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` | 注意,上面包括也被支持的空标题(也可以只是没有任何内容)的示例。 该响应返回一个响应数组,其中包括每个搜索请求的搜索响应和状态代码,与其在原始 **multi search **请求中的顺序相匹配。 如果该特定搜索请求的完全失败,将返回具有错误消息和相应状态代码的对象,而不是实际的搜索响应。 端点还允许对URI中的 **index/indices **和 **type/types** 进行搜索,在这种情况下,它将被用作默认值,除非在标题中另有明确定义。 例如: | `$ 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` | 上面将针对没有定义索引的所有请求对 **test** 索引执行搜索,最后一个将针对** test2** 索引执行。 可以以类似的方式设置** search_type **以全局地应用于所有搜索请求。 **msearch **的 ***max_concurrent_searches** *请求参数可用于控制 **multi search api** 将执行的并发搜索的最大数量。 此默认值基于数据节点的数量和默认搜索线程池大小。 ### 安全 请查看 [](https://www.elastic.co/guide/en/elasticsearch/reference/current/url-access-control.html "URL-based access control")*[URL-based access control](https://www.elastic.co/guide/en/elasticsearch/reference/current/url-access-control.html)*