博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
3.聚合
阅读量:4049 次
发布时间:2019-05-25

本文共 3377 字,大约阅读时间需要 11 分钟。

聚合

桶(Buckets)   相当于SQL中group by。满足特定条件的文档的集合

指标(Metrics) 相当于SQL中select key,count(key)。对桶内的文档进行统计计算,包含COUNT() 、 SUM() 、 MAX()等统计方法。

 

指标 

单值聚合

terms                   相当于SQL中 COUNT,求分组的和

avg                      相当于SQL中 AVG,求平均值

min                      相当于SQL中的MIN,求最小值

max                     相当于SQL中的MAX,求最大值

sum                     相当于SQL中的SUM,求和

cardinality            相当于SQL中的COUNT(DISTINCT)求唯一值,即不重复的字段有多少

histogram            按给定的值分组统计

date_histogram   按时间维度分组统计

多值聚合

percentile_ranks 求百分比

stats 多种聚合结果

extended_stats  多种聚合结果和扩展聚合结果

 

简单例子

 

GET /cars/transactions/_search{    "size" : 0,    "aggs" : {         "popular_colors" : {             "terms" : {               "field" : "color",              "size"  : 10            }        },        "sex": {          "terms": {            "field": "sex"          }        }    }}
 

 

1.size 设置成 0 。不关心搜索结果的具体内容,所以将返回记录数设置为 0 来提高查询速度

2.聚合操作被置于顶层参数 aggs 之下(完整形式 aggregations 同样有效)。aggs中可以有一个或多个聚合

3.可以为聚合指定一个想要名称,本例中是: popular_colors 和sex,其中popular_colors取top10

4.定义单个桶的类型 terms

 

添加度量指标和嵌套桶

添加对量指标的例子,除显示有多少种颜色外,同时显示每种颜色的价格。通过添加新的 aggs 层。这个新的聚合层让我们可以将 avg 度量嵌套置于 terms 桶内。

 

GET /cars/transactions/_search{   "size" : 0,   "aggs": {      "colors": {         "terms": {            "field": "color"         },         "aggs": {             "avg_price": {                "avg": {                  "field": "price"                }            }         }      }   }}
 

 

另一个嵌套桶的列子,获取每种颜色的平均价格和制造商分布

 

GET /cars/transactions/_search{   "size" : 0,   "aggs": {      "colors": {         "terms": {            "field": "color"         },         "aggs": {            "avg_price": {                "avg": {                  "field": "price"               }            },            "make": {                 "terms": {                    "field": "make"                 }            }         }      }   }}
 

 

更多的嵌套实例,获取每种颜色的平均价格和制造商分布同时,通过添加新的aggs层,获取各个制造商的最低价和最高价

 

GET /cars/transactions/_search{   "size" : 0,   "aggs": {      "colors": {         "terms": {            "field": "color"         },         "aggs": {            "avg_price": { "avg": { "field": "price" }            },            "make" : {                "terms" : { "field" : "make" },                "aggs" : {                     "min_price" : { "min": { "field": "price"} },                     "max_price" : { "max": { "field": "price"} }                 }            }         }      }   }}
 

 

 条形图

 直方图 histogram可以按区间分组统计数据,

 

GET /cars/transactions/_search{   "size" : 0,   "aggs":{      "price":{         "histogram":{             "field": "price",            "interval": 20000         },         "aggs":{            "revenue": {               "sum": {                  "field" : "price"               }             }         }      }   }}
1.histogram 桶要求两个参数:一个数值字段以及一个定义桶大小间隔。

 

2.sum 度量嵌套在每个售价区间内,用来显示每个区间内的总收入。

 

按时间统计

例1:简单的时间分组统计

 

GET /cars/transactions/_search{   "size" : 0,   "aggs": {      "sales": {         "date_histogram": {            "field": "sold",            "interval": "month",             "format": "yyyy-MM-dd"          }      }   }}
 

 

 例2:按统计范围返回全部Buckets,包括空桶

 

GET /cars/transactions/_search{   "size" : 0,   "aggs": {      "sales": {         "date_histogram": {            "field": "sold",            "interval": "month",            "format": "yyyy-MM-dd",            "min_doc_count" : 0,             "extended_bounds" : {                 "min" : "2014-01-01",                "max" : "2014-12-31"            }         }      }   }}
1.min_doc_count : 这个参数强制返回空 buckets。

 

2.extended_bounds : 强制返回数据的范围。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

转载地址:http://nhyci.baihongyu.com/

你可能感兴趣的文章
Ubuntu 13.10使用fcitx输入法
查看>>
pidgin-lwqq 安装
查看>>
mint/ubuntu安装搜狗输入法
查看>>
C++动态申请数组和参数传递问题
查看>>
opencv学习——在MFC中读取和显示图像
查看>>
C/C++中关于动态生成一维数组和二维数组的学习
查看>>
JVM最简生存指南
查看>>
Java的对象驻留
查看>>
JVM并发机制探讨—内存模型、内存可见性和指令重排序
查看>>
持续可用与CAP理论 – 一个系统开发者的观点
查看>>
nginx+tomcat+memcached (msm)实现 session同步复制
查看>>
c++字符数组和字符指针区别以及str***函数
查看>>
c++类的操作符重载注意事项
查看>>
c++模板与泛型编程
查看>>
WAV文件解析
查看>>
WPF中PATH使用AI导出SVG的方法
查看>>
WPF UI&控件免费开源库
查看>>
QT打开项目提示no valid settings file could be found
查看>>
Win10+VS+ESP32环境搭建
查看>>
Ubuntu+win10远程桌面
查看>>