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

如何在Elasticsearch中统计嵌套字段下各type子字段的条目数?

Elasticsearch嵌套字段type的条目统计方案

你的Elasticsearch文档包含嵌套的Volume字段,需要统计其中type子字段的每个值的条目数,但当前使用的cardinality聚合仅返回了不同type的数量,无法满足需求。

你当前用的cardinality聚合是用来统计字段的不同值数量的,所以得到的是9种不同的type类型,而不是每个type的条目计数。要统计每个type的出现次数,需要把cardinality换成terms聚合,具体查询语句如下:

{
  "size": 0,
  "aggs": {
    "nested_properties": {
      "nested": {
        "path": "Volume"
      },
      "aggs": {
        "type_counts": {
          "terms": {
            "field": "Volume.type.keyword",
            "size": 10  // 可根据实际type数量调整
          }
        }
      }
    }
  }
}

关键说明:

  • terms聚合会按照Volume.type的不同值进行分组,统计每个值对应的条目数
  • 必须使用Volume.type.keyword字段(假设你的mapping中type字段同时包含text和keyword子字段),否则text字段的分词会导致统计结果不符合预期
  • size参数用来指定返回的分组数量,默认是10,可根据实际存在的type类型数量调整

执行后会得到符合你预期的结果,示例如下:

"aggregations": {
  "nested_properties": {
    "doc_count": 5,
    "type_counts": {
      "buckets": [
        {
          "key": "south",
          "doc_count": 2
        },
        {
          "key": "north",
          "doc_count": 2
        },
        {
          "key": "west",
          "doc_count": 1
        }
      ]
    }
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 15:55:27