Aggregations
aggregations可以看做是对查询结构的二次汇总,比如先查询出某个时间段的HTTP请求,然后统计每天的数据。在aggregations中会用到“桶”(buckets)的概念。所谓的“桶”,是满足某个条件的文档集合,他和关系型数据库中的sql语句中的group by 子句的作用相似(但又不一样)。另外,metrics(测度)是为摸个桶中的文档计算得到的统计信息,类似于sql中的count()、max()等。可见,aggregations聚合是有一个或多个buckets、零个或者多喝metrics组合而成的统计结果。每个文档中的值会被计算来决定它们是否匹配了某些buckets的条件,如匹配成功,那么该文档会被植入该buckets中。
- 最值、求和、均值统计
GET /pms/_search?pretty { "query": { "match_all": {} }, "aggs": { "min_size":{ // agg名称 "min": { "field": "price" } }, "max_size":{ // agg名称 "max": { "field": "price" } }, "avg_val":{ // agg名称 "avg": { "field": "price" } } } }
返回的结果:
- Stats Aggregation 及 Extended Stats Aggregations
GET /pms/_search?pretty { "query": { "match_all": {} }, "aggs": { "multi_stats_size":{ // agg名称 自定义 "stats": { "field": "price" } }, "extended_stats_of_size":{ // agg名称 自定义 "extended_stats": { "field": "price" } } } }
返回结果 :
- Tarms Aggregations 用于对指定字段的内容进行分布统计
// group by brandName GET /pms/_search?pretty { "query": { "match_all": {} }, "aggs": { "brand_of_aggs":{ "terms": { "field": "brandName" } } } } // GET /pms/_search?pretty { "query": { "match_all": {} }, "aggs": { //外层aggs "brand_of_aggs":{ "terms": { "field": "brandName", "si