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

如何编写Elasticsearch查询语句按status字段筛选对应状态的数据

问题排查

你原有查询的语法不符合Elasticsearch的DSL规范,存在两个明显错误:

  1. 字段匹配逻辑缺少查询子句声明:不能直接在筛选规则中写{"字段名": "值"}结构,必须套在term(精确匹配单个值)、terms(匹配多个值任意一个)等查询子句内
  2. 你需要同时匹配Active和Inactive两个状态,使用terms查询会比多个should条件更简洁高效

正确查询语句(匹配文档根节点的status字段)

根据你给出的示例数据,你要筛选的是_source根层级下的status字段,直接使用以下查询即可:

GET /customer-fr/_search
{
  "query": {
    "bool": {
      "filter": [
        {
          "terms": {
            "status": ["Active", "Inactive"]
          }
        }
      ]
    }
  }
}

如果你的status字段是text类型,将字段名替换为status.keyword即可实现精确匹配。


补充:如果需要匹配嵌套对象内的status字段

如果你要筛选的是affiliations、specialties、customerAddresses这类嵌套数组内的status字段,需要使用nested查询,示例如下(筛选affiliations数组中存在status为In-Active的文档):

GET /customer-fr/_search
{
  "query": {
    "nested": {
      "path": "affiliations",
      "query": {
        "term": {
          "affiliations.status": "In-Active"
        }
      }
    }
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 23:36:05