Elasticsearch聚合分为两种类型,度量聚合(metric aggregation)和桶聚合(bucket aggregation)。
定义和适用范围度量聚合:接收一个输入文档集并生成至少一个统计值。一遍使用min、max、sum、avg进行聚合,另外还支持通过脚本、value_count、stats、extended_stats进行度量聚合。桶聚合:桶聚合返回很多子集,并限定输入数据到一个特殊的叫做桶的子集中。一遍使用term、range、date_range、histogram、date_histogram、nested、missing、IPv4 range、时区、geo_distance、geohash_grid进行桶聚合。 举例使用
1. 创建测试数据, 参考文章elasticsearch aggregations 之一:引入buckets、metrics_w1346561235的博客-CSDN博客,创建es索引。该案例假定es有一个index,存储了某家汽车经销商的销售信息:包括车的售价、销售时间、车身颜色、生产厂商等。
1.1 创建索引结构,可通过postman来进行 *** 作。
1.2 通过_bulk往es索引批量导入文档
1.3 查询索引中的所有文档
2. 对汽车的价格price字段进行平均值avg指标聚合。
补充说明:
cars/_search:表示在cars索引中,进行search请求。
"size": 0, 表示返回结果集中显示满足条件的文档记录为0条。(即不显示满足条件的文档记录)。
”aggs" 为顶层关键字,表示aggregation聚合 *** 作
"avg_price"为自定义名称。
"avg" 平均值度量。
“field": "price" 对price字段进行度量聚合。
在返回的aggregations->avg_price->value中,可看到最后度量聚合结果为26500.0,算出该经销商卖出汽车的平均价格。
3. 桶聚合类型1:terms桶聚合,为字段中每种词条创建一个桶。下面对汽车颜色进行terms桶聚合。
补充说明:
”cts_by_color"为自定义桶聚合名称。
"aggs" 顶层关键字,表示聚合 *** 作。
“terms" 关键字表示该聚合为term桶类型。
"field": "color" 表示基于color字段进行term类型桶聚合。
从返回结果aggregations->buckets集合中,可看到red桶聚合有4条记录,blue桶聚合有2条记录,gree桶聚合有2条记录。
4. 桶聚合类型2:range桶聚合,使用定义的范围来创建桶。下面对汽车价格进行range桶聚合。
”price_range" 为自定义桶聚合名称。
"range" 关键字表示range类型桶聚合。
“filed": "price" 对price字段进行range类型桶聚合。
”ranges" 关键字表示range集合。
第一种range: {"from": 10000, "to": 80000}, 上界包含,下界不包含。
第二种range: {"from": 80000}。
从返回结果aggregations->price_range->buckets,可看到价格范围{"from": 10000, "to": 80000}的文档记录数有7条,{"from": 80000}的有1条。
5. 桶聚合类型3:date_range桶聚合,类似于range桶聚合,但它专用在使用日期类型的字段。下面对汽车销售时间进行date_range桶聚合。
补充说明类似于range桶聚合。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)