多搜索模板 API编辑

使用单个请求运行多个 模板化搜索

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'
      }
    }
  ]
)
puts response
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" }}

请求编辑

GET <target>/_msearch/template

GET _msearch/template

POST <target>/_msearch/template

POST _msearch/template

先决条件编辑

  • 如果启用了 Elasticsearch 安全功能,您必须对目标数据流、索引或别名具有 read 索引权限。对于跨集群搜索,请参阅 远程集群

路径参数编辑

<target>
(可选,字符串) 要搜索的数据流、索引和别名的逗号分隔列表。支持通配符 (*)。要搜索所有数据流和索引,请省略此参数或使用 *

查询参数编辑

ccs_minimize_roundtrips
(可选,布尔值) 如果为 true,则跨集群搜索请求的网络往返次数将降至最低。默认为 true
max_concurrent_searches
(可选,整数) API 可以运行的并发搜索的最大数量。默认为 max(1, (# of 数据节点 * min(搜索线程池大小, 10)))
rest_total_hits_as_int
(可选,布尔值) 如果为 true,则响应将返回 hits.total 作为整数。如果为 false,则它将返回 hits.total 作为对象。默认为 false
search_type

(可选,字符串) 搜索操作的类型。可用选项

  • query_then_fetch
  • dfs_query_then_fetch
typed_keys
(可选,布尔值) 如果为 true,则响应将在其各自的类型前缀聚合和建议器名称。默认为 false

请求正文编辑

请求正文必须采用以下格式的换行符分隔 JSON (NDJSON)

<header>\n
<body>\n
<header>\n
<body>\n

每个 <header><body> 对表示一个搜索请求。

The <header> 支持与 多搜索 API<header> 相同的参数。The <body> 支持与 搜索模板 API 的请求正文相同参数。

<header>

(必需,对象) 用于限制或更改搜索的参数。

此对象对于每个搜索正文都是必需的,但可以为空 ({}) 或空行。

<header> 对象的属性
allow_no_indices

(可选,布尔值) 如果为 true,则请求 不会 返回错误,即使通配符表达式或 _all 值仅检索到缺失或关闭的索引。

此参数也适用于指向缺失或索引的 别名

expand_wildcards

(可选,字符串) 通配符模式可以匹配的索引类型。如果请求可以定位数据流,则此参数决定通配符表达式是否匹配隐藏的数据流。支持逗号分隔的值,例如 open,hidden。有效值为

all
匹配任何数据流或索引,包括 隐藏 的数据流或索引。
open
匹配打开的、非隐藏的索引。还匹配任何非隐藏的数据流。
closed
匹配关闭的、非隐藏的索引。还匹配任何非隐藏的数据流。数据流无法关闭。
hidden
匹配隐藏的数据流和隐藏的索引。必须与 openclosed 或两者结合使用。
none
不接受通配符模式。

默认为 open

ignore_unavailable
(可选,布尔值) 如果为 true,则响应中不包含来自缺失或关闭索引的文档。默认为 false
index

(可选,字符串或字符串数组) 要搜索的数据流、索引和别名。支持通配符 (*)。将多个目标指定为数组。

如果未指定此参数,则使用 <target> 请求路径参数作为后备。

preference
(可选,字符串) 用于执行搜索的节点或分片。默认情况下为随机。
request_cache
(可选,布尔值) 如果为 true,则可以将请求缓存用于此搜索。默认为索引级设置。请参阅 分片请求缓存设置
routing
(可选,字符串) 用于将搜索操作路由到特定分片的自定义 路由值
search_type

(可选,字符串) 指示在对返回的文档进行评分时是否应使用全局术语和文档频率。

选项为

query_then_fetch
(默认) 使用分片的本地术语和文档频率对文档进行评分。这通常更快,但不太准确。
dfs_query_then_fetch
使用所有分片上的全局术语和文档频率对文档进行评分。这通常更慢,但更准确。
<body>

(请求,对象) 搜索的参数。

explain
(可选,布尔值) 如果为 true,则返回有关每个命中项的评分计算的详细信息。默认为 false
id
(必需*,字符串) 要使用的搜索模板的 ID。如果未指定 source,则此参数是必需的。
params
(可选,对象) 用于替换模板中 Mustache 变量的键值对。键是变量名。值是变量值。
profile
(可选,布尔值) 如果为 true,则会对查询执行进行分析。默认为 false
source

(必需*,对象) 内联搜索模板。支持与 搜索 API 的请求正文相同参数。还支持 Mustache 变量。

如果未指定 id,则此参数是必需的。

响应代码编辑

API 仅在请求本身失败时返回 400 状态代码。如果请求中的一个或多个搜索失败,则 API 将返回 200 状态代码,并在响应中包含每个失败搜索的 error 对象。

响应正文编辑

responses

(对象数组) 每个搜索的结果,按提交顺序返回。每个对象使用与 搜索 API 的响应相同的属性。

如果搜索失败,则响应将包含一个包含错误消息的 error 对象。

curl 请求编辑

如果向 curl 提供文本文件或文本输入,请使用 --data-binary 标志而不是 -d 以保留换行符。

$ 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