Link Search Menu Expand Document Documentation Menu

多重搜索模板

1.0 版引入

多重搜索模板 API 在单个 API 请求中运行多个搜索模板请求。

端点

多重搜索模板 API 使用以下路径

GET /_msearch/template
POST /_msearch/template
GET /{index}/_msearch/template
POST /{index}/_msearch/template

查询参数和元数据选项

所有参数均为可选。有些参数也可以作为每个元数据行的一部分应用于每次搜索。

参数 类型 描述 元数据中支持
allow_no_indices 布尔型 指定是否忽略不匹配任何索引的通配符。默认值为 true
cancel_after_time_interval 时间 搜索请求将被取消的时间间隔。在父请求和子请求级别均支持。优先级顺序为子级别参数、父级别参数和集群设置。默认值为 -1
css_minimize_roundtrips 布尔型 指定 OpenSearch 是否应尝试最小化协调节点和远程集群之间的网络往返次数(仅适用于跨集群搜索请求)。默认值为 true
expand_wildcards 枚举 将通配符表达式扩展为具体索引。用逗号组合多个值。支持的值有 allopenclosedhiddennone。默认值为 open
ignore_unavailable 布尔型 如果索引列表中的索引或分片不存在,则此设置指定是忽略缺失的索引或分片,而不是使查询失败。默认值为 false
max_concurrent_searches 整数 最大并发搜索数。默认值取决于您的节点计数和搜索线程池大小。更高的值可以提高性能,但可能会有集群过载的风险。
max_concurrent_shard_requests 整数 每个搜索在每个节点上执行的最大并发分片请求数。默认值为 5。更高的值可以提高性能,但可能会有集群过载的风险。
pre_filter_shard_size 整数 默认值为 128
rest_total_hits_as_int 字符串 指定 hits.total 属性是作为整数 (true) 还是对象 (false) 返回。默认值为 false
search_type 字符串 影响相关性分数。有效选项是 query_then_fetchdfs_query_then_fetchquery_then_fetch 使用单个分片的术语和文档频率对文档进行评分(更快,准确性较低),而 dfs_query_then_fetch 使用所有分片的术语和文档频率(更慢,准确性更高)。默认值为 query_then_fetch
typed_keys 布尔型 指定在响应中是否以其内部类型作为聚合名称的前缀。默认值为 false

仅限元数据选项

某些选项不能作为参数应用于整个请求。相反,您可以将它们作为每个元数据行的一部分,应用于每次搜索。所有选项均为可选。

选项 类型 描述
index 字符串,字符串数组 如果您未在 URL 中指定一个或多个索引(或希望覆盖单个搜索的 URL 值),则可以在此选项下包含它。示例包括 "logs-*"["my-store", "sample_data_ecommerce"]
preference 字符串 指定要执行搜索的节点或分片。此设置对于测试可能很有用,但在大多数情况下,默认行为可提供最佳搜索延迟。选项包括 _local_only_local_prefer_nodes_only_nodes_shards。最后三个选项接受节点或分片列表。示例包括 "_only_nodes:data-node1,data-node2""_shards:0,1
request_cache 布尔型 指定是否缓存结果,这可以提高重复搜索的延迟。默认是使用索引的 index.requests.cache.enable 设置(新索引默认为 true)。
路由 字符串 逗号分隔的自定义路由值,例如 "routing": "value1,value2,value3"

请求正文

多重搜索模板请求体遵循此模式,类似于多重搜索 API 模式

Metadata\n
Query\n
Metadata\n
Query\n

  • 元数据行包括选项,例如要搜索的索引和搜索类型。
  • 查询行使用查询 DSL

批量操作一样,JSON 无需压缩——空格也可以——但它需要位于单行。OpenSearch 使用换行符解析多重搜索请求,并要求请求体以换行符结尾。

请求示例

以下示例 msearch/template API 请求使用名为 line_search_templateplay_search_template 的多个模板对单个索引运行查询

GET _msearch/template
{"index":"shakespeare"}
{"id":"line_search_template","params":{"text_entry":"All the world's a stage","limit":false,"size":2}}
{"index":"shakespeare"}
{"id":"play_search_template","params":{"play_name":"Henry IV"}}

示例响应

OpenSearch 返回一个数组,其中包含每次搜索的结果,其顺序与多重搜索模板请求中的顺序相同

{
  "took": 5,
  "responses": [
    {
      "took": 5,
      "timed_out": false,
      "_shards": {
        "total": 1,
        "successful": 1,
        "skipped": 0,
        "failed": 0
      },
      "hits": {
        "total": {
          "value": 0,
          "relation": "eq"
        },
        "max_score": null,
        "hits": []
      },
      "status": 200
    },
    {
      "took": 3,
      "timed_out": false,
      "_shards": {
        "total": 1,
        "successful": 1,
        "skipped": 0,
        "failed": 0
      },
      "hits": {
        "total": {
          "value": 0,
          "relation": "eq"
        },
        "max_score": null,
        "hits": []
      },
      "status": 200
    }
  ]
}
剩余 350 字符

有问题?

想贡献?