首页/数据/NoSQL 速查/cardinality 基数聚合(去重计数)
本包目录(322 条)
MongoDB99 条
Elasticsearch89 条
ClickHouse56 条时序与列式28 条选型与架构50 条

cardinality 基数聚合(去重计数)

cardinality 聚合估算字段的不同值个数(类似 count distinct),内部使用 HyperLogLog++,结果近似;precision_threshold 越高越准但内存消耗上升。

NoSQL 速查数据更新于 2026-10-12
接口"cardinality": { "field": "user_id" }
精度precision_threshold 默认 3000、上限 40000:低基数时低于阈值可精确
精确替代要求精确去重时可对分桶结果做二次计算或改用 composite

示例

示例
GET /logs/_search
{
  "size": 0,
  "aggs": {
    "unique_users": {
      "cardinality": { "field": "user_id", "precision_threshold": 40000 }
    }
  }
}
基数小于精度阈值时结果通常是精确的;远超阈值时误差随基数增大,监控看板类场景一般够用。

易错点

  • 把 cardinality 当成精确 count distinct 使用会踩坑,计费或对账类场景要先验证误差
  • 对 text 字段做 cardinality 同样受 fielddata 限制,应使用 keyword 字段

数据来源与参考

  • Elasticsearch Guide: Cardinality aggregation
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌