两个主要概念
1、bucket:一个数据分组,如group by city,对于相同的city就放在同一个bucket中。
2、metric:对一个数据分组执行的统计,即对某一个bucket执行聚合分析,如求平均、求和、最大、最小等。
例子一:
#计算每个studymodel下的商品数量#类同select studymodel,count(*) from book group by studymodelGET /book/_search{"size": 0, #表示hits里面的数据,0表示不显示原始数据"query": {"match_all": {} #这里可以带上搜索条件,相当于where条件},"aggs": {"group_by_model": { #别名"terms": { "field": "studymodel" } #聚合的条件}}}
例子二:
#先分组,再算每组的平均值,计算每个tag下的商品的平均价格GET /book/_search{"size": 0,"aggs" : {"group_by_tags" : {"terms" : {"field" : "tags","order": { #设置根据avg_price倒序排序"avg_price": "desc"}},"aggs" : { #在aggs里面再加一个子aggs,即可实现"avg_price" : {"avg" : { "field" : "price" } ##通过avg函数统计平均值}}}}}
例子三:
#按照指定的价格范围区间进行分组,然后在每组内再按照tag进行分组,最后再计算每组的平均价格GET /book/_search{"size": 0,"aggs": {"group_by_price": {"range": {"field": "price","ranges": [{"from": 0,"to": 40},{"from": 40,"to": 60},{"from": 60,"to": 80}]},"aggs": {"group_by_tags": {"terms": {"field": "tags"},"aggs": {"average_price": {"avg": {"field": "price"}}}}}}}}
