多搜索模板 API
编辑多搜索模板 API
编辑通过单个请求运行多个模板化搜索。
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" } } ], ) print(resp)
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
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", }, }, ], }); console.log(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
路径参数
编辑-
<target>
- (可选,字符串)要搜索的数据流、索引和别名的逗号分隔列表。支持通配符 (
*
)。要搜索所有数据流和索引,请省略此参数或使用*
。
查询参数
编辑-
ccs_minimize_roundtrips
- (可选,布尔值)如果为
true
,则会为跨集群搜索请求最大程度地减少网络往返次数。默认为true
。 -
max_concurrent_searches
- (可选,整数)API 可以运行的最大并发搜索数。默认为
max(1, (# of 数据节点 * min(搜索线程池大小, 10)))
。 -
rest_total_hits_as_int
- (可选,布尔值)如果为
true
,则响应将hits.total
作为整数返回。如果为 false,则将其作为对象返回。默认为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>
对都表示一个搜索请求。
<header>
支持与 多搜索 API 的 <header>
相同的参数。<body>
支持与 搜索模板 API 的请求正文相同的参数。
-
<header>
-
(必需,对象)用于限制或更改搜索的参数。
每个搜索正文都需要此对象,但可以为空 (
{}
) 或空白行。<header>
对象的属性-
allow_no_indices
-
(可选,布尔值)如果为
true
,则当通配符表达式或_all
值仅检索丢失或关闭的索引时,请求不返回错误。此参数也适用于指向丢失或索引的别名。
-
expand_wildcards
-
(可选,字符串)通配符模式可以匹配的索引类型。如果请求可以以数据流为目标,则此参数确定通配符表达式是否匹配隐藏的数据流。支持逗号分隔的值,例如
open,hidden
。有效值如下-
all
- 匹配任何数据流或索引,包括隐藏的。
-
open
- 匹配打开的非隐藏索引。也匹配任何非隐藏数据流。
-
closed
- 匹配关闭的非隐藏索引。也匹配任何非隐藏数据流。数据流无法关闭。
-
hidden
- 匹配隐藏的数据流和隐藏的索引。必须与
open
、closed
或两者结合使用。 -
none
- 不接受通配符模式。
默认为
open
。 -
-
ignore_unavailable
- (可选,布尔值)如果为
true
,则响应中不包括来自丢失或关闭的索引的文档。默认为false
。 -
index
-
(可选,字符串或字符串数组)要搜索的数据流、索引和别名。支持通配符 (
*
)。将多个目标指定为数组。如果未指定此参数,则将
<target>
请求路径参数用作回退。 -
preference
- (可选,字符串)用于执行搜索的节点或分片。默认为随机。
-
request_cache
- (可选,布尔值)如果为
true
,则此搜索可以使用请求缓存。默认为索引级设置。请参阅分片请求缓存设置。 -
routing
- (可选,字符串)用于将搜索操作路由到特定分片的自定义路由值。
-
search_type
-
(可选,字符串)指示在对返回的文档评分时是否应使用全局术语和文档频率。
选项包括
-
query_then_fetch
- (默认)文档使用分片的本地术语和文档频率进行评分。这通常更快,但准确性较低。
-
dfs_query_then_fetch
- 文档使用所有分片的全局术语和文档频率进行评分。这通常较慢,但准确性更高。
-
-
-
<body>
-
(请求,对象)搜索的参数。
响应代码
编辑仅当请求本身失败时,API 才会返回 400
状态代码。如果请求中的一个或多个搜索失败,则 API 将返回 200
状态代码,并在响应中为每个失败的搜索返回一个 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