You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Elasticsearch中查询嵌套对象结构的指定key及对应字段?

问题原因说明

你原查询的错误在于直接对available_at字段执行term查询,但available_at是嵌套对象结构,并非存储单个值的普通字段,因此无法匹配到预期结果。

正确查询方案

根据你的实际需求,分两种常用场景给出对应查询语句:


场景1:查询available_at下任意子对象的item_id值在[5,6]范围内的文档

如果你的available_at是普通object类型,直接使用terms查询即可:

{
  "query": {
    "bool": {
      "must": [
        {
          "terms": {
            "available_at.item_id": [5, 6]
          }
        }
      ]
    }
  }
}

如果你的available_at被设置为nested嵌套类型,需要使用nested查询避免交叉匹配:

{
  "query": {
    "nested": {
      "path": "available_at",
      "query": {
        "terms": {
          "available_at.item_id": [5, 6]
        }
      }
    }
  }
}

场景2:查询available_at下存在键为"5"或"6"的子对象的文档

如果你的需求是匹配available_at中是否存在对应键的子对象,使用bool+exists查询即可:

{
  "query": {
    "bool": {
      "should": [
        {
          "exists": {
            "field": "available_at.5"
          }
        },
        {
          "exists": {
            "field": "available_at.6"
          }
        }
      ],
      "minimum_should_match": 1
    }
  }
}

内容的提问来源于stack exchange,提问作者Sahil Paudel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 14:24:03