IDs 查询 #
使用 ids 查询在 _id 字段中搜索具有一个或多个特定文档 ID 值的文档。例如,以下查询请求 ID 为 34229 和 91296 的文档:
相关指南(先读这些) #
GET shakespeare/_search
{
"query": {
"ids": {
"values": [
34229,
91296
]
}
}
}
参数说明 #
查询接受以下参数。
| 参数 | 数据类型 | 描述 |
|---|---|---|
values | Array of strings | 要搜索的文档 ID。必填。 |
boost | Float | 一个浮点值,用于指定此字段相对于相关性分数的权重。值高于 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 获取文档,不需要评分或额外过滤,使用
_mgetAPI 性能更好。