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

Elasticsearch嵌套字段多值匹配:获取含指定所有年龄的文档

解决方案:查询包含指定所有年龄值的嵌套数组文档

针对你的需求,无需修改索引映射,可通过**布尔查询(bool query)结合多个嵌套查询(nested query)**实现,确保文档的patients嵌套数组中同时存在age为"1"和"2"的子对象。

具体查询语句

GET testindex1/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "nested": {
            "path": "patients",
            "query": {
              "term": {
                "patients.age": "1"
              }
            }
          }
        },
        {
          "nested": {
            "path": "patients",
            "query": {
              "term": {
                "patients.age": "2"
              }
            }
          }
        }
      ]
    }
  }
}

逻辑说明

  1. 布尔查询的must子句:要求数组内同时满足所有嵌套查询条件,确保文档中既存在age=1的患者,也存在age=2的患者。
  2. 嵌套查询(nested query):由于patients是nested类型,必须通过该查询指定字段路径,Elasticsearch会单独评估每个嵌套子对象的匹配情况,而非扁平化数组后的模糊匹配。
  3. term查询:因为age字段定义为keyword类型,使用term查询可精准匹配字段值,避免分词干扰。

执行该查询后,将返回文档1和文档2,文档3因缺少age=1的患者子对象会被排除。

内容的提问来源于stack exchange,提问作者Victor Kamada

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 21:25:24