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

Elasticsearch嵌套对象过滤:仅保留符合特定状态或无状态的文档

Elasticsearch嵌套对象过滤:确保所有interviewRounds对象符合指定条件

需求明确:检索到的文档必须满足entity.interviewRounds数组中的每一个嵌套对象,要么不存在status字段,要么status的值为INTERVIEW_SCHEDULE_PENDING。

你之前的查询逻辑有误——用nested结合should的写法,只要数组里有一个对象符合条件就会返回整个文档,这和「所有对象都要符合要求」的需求完全相反。

正确的查询语句

{
  "bool": {
    "must_not": {
      "nested": {
        "path": "entity.interviewRounds",
        "query": {
          "bool": {
            "must": [
              {
                "exists": {
                  "field": "entity.interviewRounds.status"
                }
              },
              {
                "bool": {
                  "must_not": {
                    "term": {
                      "entity.interviewRounds.status.keyword": "INTERVIEW_SCHEDULE_PENDING"
                    }
                  }
                }
              }
            ]
          }
        }
      }
    }
  }
}

逻辑说明

  • 外层用bool.must_not,核心是排除所有包含不符合条件的嵌套对象的文档
  • 嵌套查询部分专门定位:存在status字段,且status值不等于INTERVIEW_SCHEDULE_PENDING的嵌套对象
  • 经过这样的排除后,剩下的文档必然满足「所有嵌套对象要么无status,要么status是指定值」的要求

你的示例文档完全符合条件,会被这个查询匹配到。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 00:22:16