Link Search Menu Expand Document Documentation Menu

搜索

1.0 版引入

搜索 API 操作允许您执行搜索请求,以在集群中搜索数据。

端点

GET /<index>/_search
GET /_search

POST /<index>/_search
POST /_search

查询参数

所有参数都是可选的。

参数 类型 描述
allow_no_indices 布尔型 是否忽略不匹配任何索引的通配符。默认值为 true
allow_partial_search_results 布尔型 如果请求遇到错误或超时,是否返回部分结果。默认为 true
分析器 字符串 在查询字符串中使用的分析器。
analyze_wildcard 布尔型 更新操作是否应在分析中包含通配符和前缀查询。默认为 false
batched_reduce_size 整数 在节点上减少多少个分片结果。默认为 512。
cancel_after_time_interval 时间 搜索请求将被取消的时间。请求级别参数优先于 cancel_after_time_interval 集群设置。默认为 -1。
ccs_minimize_roundtrips 布尔型 是否最小化节点与远程集群之间的往返次数。默认为 true
default_operator 字符串 指示字符串查询的默认操作符应为 AND 还是 OR。默认为 OR。
df 字符串 如果查询字符串中未提供字段前缀,则使用的默认字段。
docvalue_fields 字符串 OpenSearch 应使用其 docvalue 形式返回的字段。
expand_wildcards 字符串 指定通配符表达式可以匹配的索引类型。支持逗号分隔的值。有效值为 all(匹配任何索引)、open(匹配开放、非隐藏索引)、closed(匹配关闭、非隐藏索引)、hidden(匹配隐藏索引)和 none(拒绝通配符表达式)。默认为 open。
explain 布尔型 是否返回 OpenSearch 如何计算文档分数的详细信息。默认为 false
from 整数 开始搜索的起始索引。默认值为 0。
ignore_throttled 布尔型 如果索引被冻结,是否忽略具体、扩展的索引或带有别名的索引。默认为 true
ignore_unavailable 布尔型 指定是否在响应中包含缺失或关闭的索引,并在搜索请求期间忽略不可用的分片。默认值为 false
lenient 布尔型 指定 OpenSearch 是否应接受查询存在格式错误(例如,查询文本字段时使用整数)的请求。默认值为 false
max_concurrent_shard_requests 整数 此请求应在每个节点上执行多少个并发分片请求。默认为 5。
phase_took 布尔型 是否在响应中返回阶段级 took 时间值。默认为 false
pre_filter_shard_size 整数 一个预过滤大小阈值,如果请求超过该阈值,将触发预过滤操作。默认为 128 个分片。
preference 字符串 指定 OpenSearch 应在哪些分片或节点上执行搜索。有关有效值,请参阅`preference` 查询参数
q 字符串 Lucene 查询字符串的查询。
request_cache 布尔型 指定 OpenSearch 是否应使用请求缓存。默认值为索引设置中是否启用它。
rest_total_hits_as_int 布尔型 是否将 hits.total 作为整数返回。否则返回一个对象。默认为 false
路由 字符串 用于将按查询更新操作路由到特定分片的值。
scroll 时间 保持搜索上下文打开的时间。
search_type 字符串 OpenSearch 在计算相关性分数时是否应使用全局词条和文档频率。有效选项是 query_then_fetchdfs_query_then_fetchquery_then_fetch 使用分片的本地词条和文档频率对文档进行评分。它通常更快,但准确性较低。dfs_query_then_fetch 使用所有分片的全局词条和文档频率对文档进行评分。它通常较慢,但准确性较高。默认为 query_then_fetch
seq_no_primary_term 布尔型 是否返回每个文档命中最后一次操作的序列号和主术语。
size 整数 响应中包含多少个结果。
sort(排序) 列表 要排序的 : 对的逗号分隔列表。
_source 字符串 是否在响应中包含 _source 字段。
_source_excludes 列表 要从响应中排除的源字段的逗号分隔列表。
_source_includes 列表 要包含在响应中的源字段的逗号分隔列表。
stats 字符串 与请求关联的值,用于额外日志记录。
stored_fields 布尔型 获取操作是否应检索索引中存储的字段。默认为 false
suggest_field 字符串 OpenSearch 可用于查找相似词条的字段。
suggest_mode 字符串 搜索时使用的模式。可用选项包括 always(根据提供的词条使用建议)、popular(使用出现次数较多的建议)和 missing(使用索引中不存在的词条的建议)。
suggest_size 整数 返回多少个建议。
suggest_text 字符串 建议应基于的来源。
terminate_after 整数 OpenSearch 在终止请求之前应处理的最大匹配文档(命中)数。默认为 0。
timeout 时间 操作应等待活动分片响应多长时间。默认为 1m
track_scores 布尔型 是否返回文档分数。默认为 false
track_total_hits 布尔值或整数 是否返回有多少文档匹配查询。
typed_keys 布尔型 返回的聚合和建议词条是否应在响应中包含其类型。默认为 true
version 布尔型 是否将文档版本作为匹配项包含在内。
include_named_queries_score 布尔型 是否返回带有命名查询的分数。默认为 false

preference 查询参数

preference 查询参数指定 OpenSearch 应在哪些分片或节点上执行搜索。以下是有效值:

  • _primary:仅在主分片上执行搜索。
  • _replica:仅在副本分片上执行搜索。
  • _primary_first:在主分片上执行搜索,如果主分片不可用,则故障转移到其他可用分片。
  • _replica_first:在副本分片上执行搜索,如果副本分片不可用,则故障转移到其他可用分片。
  • _local:如果可能,在本地节点的自有分片上执行搜索。
  • _prefer_nodes:<node-id-1>,<node-id-2>:如果可能,在指定的节点上执行搜索。使用逗号分隔列表指定多个节点。
  • _shards:<shard-id-1>,<shard-id-2>:仅在指定的分片上执行搜索。使用逗号分隔列表指定多个分片。当与其他偏好结合使用时,_shards 偏好必须首先列出。例如,_shards:1,2|_replica
  • _only_nodes:<node-id-1>,<node-id-2>:仅在指定的节点上执行搜索。使用逗号分隔列表指定多个节点。
  • <string>:指定用于搜索的自定义字符串。该字符串不能以下划线字符(_)开头。具有相同自定义字符串的搜索将路由到相同的分片。

请求正文

所有字段都是可选的。

字段 类型 描述
aggs 对象 在可选的 aggs 参数中,您可以定义任意数量的聚合。每个聚合都由其名称和 OpenSearch 支持的一种聚合类型定义。有关更多信息,请参阅聚合
docvalue_fields 对象数组 OpenSearch 应使用其 docvalue 形式返回的字段。指定格式以特定格式返回结果,例如日期和时间。
fields 数组 要在请求中搜索的字段。指定格式以特定格式返回结果,例如日期和时间。
explain 字符串 是否返回 OpenSearch 如何计算文档分数的详细信息。默认为 false
from 整数 开始搜索的起始索引。默认值为 0。
indices_boost 对象数组 用于提升指定索引分数的数值。以 <index> : <boost-multiplier> 的格式指定。
min_score 整数 指定一个分数阈值,只返回高于该阈值的文档。
query 对象 请求中使用的 DSL 查询
seq_no_primary_term 布尔型 是否返回每个文档命中最后一次操作的序列号和主术语。
size 整数 返回多少个结果。默认为 10。
_source   是否在响应中包含 _source 字段。
stats 字符串 与请求关联的值,用于额外日志记录。
terminate_after 整数 OpenSearch 在终止请求之前应处理的最大匹配文档(命中)数。默认为 0。
timeout 时间 等待响应的时间。默认为无超时。
version 布尔型 是否在响应中包含文档版本。

请求示例

GET /movies/_search
{
  "query": {
    "match": {
      "text_entry": "I am the night"
    }
  }
}

响应正文字段

{
  "took": 3,
  "timed_out": false,
  "_shards": {
    "total": 1,
    "successful": 1,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": {
      "value": 1,
      "relation": "eq"
    },
    "max_score": 1.0,
    "hits": [
      {
        "_index": "superheroes",
        "_id": "1",
        "_score": 1.0,
        "_source": {
          "superheroes": [
            {
              "Hero name": "Superman",
              "Real identity": "Clark Kent",
              "Age": 28
            },
            {
              "Hero name": "Batman",
              "Real identity": "Bruce Wayne",
              "Age": 26
            },
            {
              "Hero name": "Flash",
              "Real identity": "Barry Allen",
              "Age": 28
            },
            {
              "Hero name": "Robin",
              "Real identity": "Dick Grayson",
              "Age": 15
            }
          ]
        }
      }
    ]
  }
}

ext 对象

从 OpenSearch 2.10 开始,插件作者可以将 ext 对象添加到搜索响应中。ext 对象包含特定于插件的响应字段。例如,在对话式搜索中,检索增强生成(RAG)的结果是一个单一的“命中”(答案)。插件作者可以将此答案作为 ext 对象的一部分包含在搜索响应中,使其与搜索命中分开。在以下示例响应中,RAG 结果位于 ext.retrieval_augmented_generation.answer 字段中。

{
  "took": 3,
  "timed_out": false,
  "_shards": {
    "total": 3,
    "successful": 3,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": {
      "value": 110,
      "relation": "eq"
    },
    "max_score": 0.55129033,
    "hits": [
      {
       "_index": "...",
        "_id": "...",
        "_score": 0.55129033,
        "_source": {
          "text": "...",
          "title": "..."
        }
      },
      {
      ...
      }
      ...
      {
      ...
      }
    ],
  }, // end of hits
  "ext": {
    "retrieval_augmented_generation": { // a search response processor
      "answer": "RAG answer"
    }
  }
} 
剩余 350 字符

有问题?

想贡献?