bucket: 一个数据分组
city | name |
---|---|
北京 | 小李 |
北京 | 小王 |
上海 | 小张 |
上海 | 小丽 |
上海 | 小陈 |
基于city划分buckets
划分出两个bucket,一个是北京bucket,一个是上海bucket
北京bucket: 包含2个人
上海bucket: 包含3个人
按照某个字段进行bucket划分,那个字段的值相同的哪些数据,就会被划分到一个bucket中
有一些mysql的sql知识的话,聚合,首先第一步是分组,对每个组内的数据进行聚合分析,分组,就是我们的bucket
metric: 对一个数据分组执行的统计
当我们有了一堆bucket,就可以对每个bucket中的数据进行聚合分析了,比如说计算一个bucket内所有数据的数量,或者计算一个bucket内所有数据的平均值,最大值,最小值
metric,就是对一个bucket执行的某种聚合分析的操作,比如说平均值,求最大值,最小值
select count(*) from acce_log group by user_id
bucket: group bu user id --> 那些user_id相同的数据,就会被划分到一个bucket中
metric: count(*),对每个user_id bucket中所有的数据,计算一个数量
1、家电卖场案例北京
以一个家电卖场中的电视销售数据为背景,来对各种品牌,各种颜色的电视的销量和销售额,进行各种各样角度的分析
PUT /tvs
{
"settings": {
"number_of_shards": 3,
"number_of_replicas": 0
},
"mappings": {
"sales": {
"properties": {
"price": {
"type": "long"
},
"color": {
"type": "keyword"
},
"brand": {
"type": "keyword"
},
"sold_date": {
"type": "date"
}
}
}
}
}
POST /tvs/sales/_bulk
{ "index": {}}
{ "price" : 1000, "color" : "红色", "brand" : "长虹", "sold_date" : "2016-10-28" }
{ "index": {}}
{ "price" : 2000, "color" : "红色", "brand" : "长虹", "sold_date" : "2016-11-05" }
{ "index": {}}
{ "price" : 3000, "color" : "绿色", "brand" : "小米", "sold_date" : "2016-05-18" }
{ "index": {}}
{ "price" : 1500, "color" : "蓝色", "brand" : "TCL", "sold_date" : "2016-07-02" }
{ "index": {}}
{ "price" : 1200, "color" : "绿色", "brand" : "TCL", "sold_date" : "2016-08-19" }
{ "index": {}}
{ "price" : 2000, "color" :