# Multi Search 模板

原文链接 : [https://www.elastic.co/guide/en/elasticsearch/reference/current/getting-started.html](https://www.elastic.co/guide/en/elasticsearch/reference/current/getting-started.html)（修改该链接为官网对应的链接）

译文链接 : [http://www.apache.wiki/display/Elasticsearch](http://www.apache.wiki/display/Elasticsearch)

贡献者 : [Josh](/display/~yeshuai)

多搜索（**Multi Search**）模板 **API** 允许使用 **_msearch/template** 端点在同一个 **API** 中执行多个搜索模板请求。

以下请求形式与 多搜索 **API** 形式相似：

```
header\n
body\n
header\n
body\n
```

**header** 部分与一般的多搜索 API 支持相同的 **index**，**types**， **search_type**，**preference** 和 **routing** 选项。

**body** 部分包含一个搜索模板 **body** 请求，并且支持 inline，存储和文件模板。比如：

```
$ cat requests
{"index": "test"}
{"inline": {"query": {"match":  {"user" : "{{username}}" }}}, "params": {"username": "john"}} ①
{"index": "_all", "types": "accounts"}
{"inline": {"query": {"{{query_type}}": {"name": "{{name}}" }}}, "params": {"query_type": "match_phrase_prefix", "name": "Smith"}}
{"index": "_all"}
{"id": "template_1", "params": {"query_string": "search for these words" }} ②
{"types": "users"}
{"file": "template_2", "params": {"field_name": "fullname", "field_value": "john smith" }} ③

$ curl -XGET localhost:9200/_msearch/template --data-binary "@requests"; echo
```

① inline 搜索模板请求

② 基于存储模板的搜索模板请求

③ 基于文件模板的搜索模板请求

响应返回一个 .response 数组，其中包括每个搜索模板请求的搜索模板响应，该响应匹配其在原始多搜索模板请求中的顺序。如果该特定搜索模板请求的完全失败，将返回 **error** 消息的对象，而不是实际的搜索响应。