IDs 查询

IDs 查询 #

使用 ids 查询在 _id 字段中搜索具有一个或多个特定文档 ID 值的文档。例如,以下查询请求 ID 为 3422991296 的文档:

相关指南(先读这些) #

GET shakespeare/_search
{
  "query": {
    "ids": {
      "values": [
        34229,
        91296
      ]
    }
  }
}

参数说明 #

查询接受以下参数。

参数数据类型描述
valuesArray of strings要搜索的文档 ID。必填。
boostFloat一个浮点值,用于指定此字段相对于相关性分数的权重。值高于 1.0 会增加字段的相关性。值介于 0.0 和 1.0 之间会降低字段的相关性。默认值为 1.0。

典型使用场景 #

批量获取已知文档 #

当你已经知道一组文档的 ID(例如从其他查询结果或外部系统获得),可以直接用 ids 查询来批量检索:

GET orders/_search
{
  "query": {
    "ids": {
      "values": ["order-001", "order-002", "order-003"]
    }
  }
}

与 Bool 查询组合 #

ids 查询可以与其他查询条件组合使用。例如,在一批已知文档中过滤特定状态的订单:

GET orders/_search
{
  "query": {
    "bool": {
      "must": {
        "ids": {
          "values": ["order-001", "order-002", "order-003", "order-004"]
        }
      },
      "filter": {
        "term": {
          "status": "shipped"
        }
      }
    }
  }
}

ids 查询 vs. mget API #

对比项ids 查询_mget API
返回格式标准搜索响应(hits文档数组
评分支持 boost 调整相关性无评分,直接获取文档
可组合性可嵌入 bool 等复合查询独立 API,不可组合
适用场景需要搜索上下文(排序、过滤等)简单批量获取,性能更优

提示:如果只需要按 ID 获取文档,不需要评分或额外过滤,使用 _mget API 性能更好。