值计数聚合(Value Count)

值计数聚合 #

value_count 聚合是一个单值指标聚合,用于计算聚合所基于的值的数量。

例如,您可以将 value_count 指标与 avg 指标一起使用来查找聚合使用多少个数字来计算平均值。

相关指南(先读这些) #

GET sample_data_ecommerce/_search
{
  "size": 0,
   "aggs": {
    "number_of_values": {
      "value_count": {
        "field": "taxful_total_price"
      }
    }
  }
}

返回内容

...
  "aggregations" : {
    "number_of_values" : {
      "value" : 4675
    }
  }
}

参数说明 #

参数必需/可选数据类型描述
field必填String要计数的字段名称。
script可选Object使用脚本生成要计数的值,替代 field
missing可选任意为缺失该字段的文档提供默认值。

value_count vs. cardinality #

value_count 统计的是字段值的 总出现次数(包括重复值),而 cardinality 统计的是 唯一值 的数量:

GET sample_data_ecommerce/_search
{
  "size": 0,
  "aggs": {
    "total_values": {
      "value_count": { "field": "customer_id" }
    },
    "unique_customers": {
      "cardinality": { "field": "customer_id" }
    }
  }
}
聚合含义示例结果
value_count字段值总出现次数(含重复)4675(总订单数)
cardinality字段唯一值数量(去重)46(独立客户数)

使用脚本 #

可以用脚本组合多个字段的值来计数:

GET sample_data_ecommerce/_search
{
  "size": 0,
  "aggs": {
    "product_count": {
      "value_count": {
        "script": {
          "source": "doc['products.product_id'].size()"
        }
      }
    }
  }
}