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

如何用Elasticsearch聚合统计各部门的唯一用户数?

实现方案

你可以通过terms聚合按部门分组,再结合cardinality聚合统计每个分组内的唯一用户数,对应的Elasticsearch DSL查询如下:

POST /your_index_name/_search
{
  "size": 0, // 不返回原始文档,仅获取聚合结果
  "aggs": {
    "group_by_department": {
      "terms": {
        "field": "department.keyword" // 若department是text类型,需用keyword子字段做精确分组
      },
      "aggs": {
        "unique_student_count": {
          "cardinality": {
            "field": "student_id.keyword" // 用keyword字段保证唯一值统计的准确性
          }
        }
      }
    }
  }
}

关键部分解释

  • size: 0:关闭原始文档返回,只保留聚合结果,提升查询效率。
  • terms聚合:按照department字段值进行分组,每个部门对应一个独立分组。如果你的department字段是text类型,必须使用其自动生成的keyword子字段,否则分词会导致分组错误。
  • cardinality聚合:在每个部门分组内,统计student_id的唯一值数量,也就是需求中的唯一用户数。

聚合结果对应说明

执行查询后,返回结果的group_by_department.buckets数组里,每个元素对应一个部门分组:

  • key字段为部门名称(如"A"、"B")
  • unique_student_count.value字段就是该部门的唯一用户数量,对应你需要的结果:部门A为2,部门B为1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 20:23:08