ElasticSearch學習筆記(二)——對聚合的簡單理解
測試資料請看上一篇部落格“筆記(一)”
聚合的格式一般為
{
"aggs":{
"my_agg_name":{
...
}
}
}
1.若是
{
"aggs":{
"my_agg_name":{
"terms":{
"field":"city"
}
}
}
}
相當於
SELECT city,COUNT(*) FROM table GROUP BY city; #分組聚合,會返回buckets
2.若是
{
"aggs":{
"my_agg_name":{
"avg":{
"field":"money"
}
}
}
}
相當於
SELECT AVG(money) FROM table; #度量聚合,會返回一個value
3.若是
{
"aggs":{
"my_agg_name":{
"terms":{
"field":"city"
},
"aggs":{
"my_child_agg_name":{
"avg":{
"field":"money"
}
}
}
}
}
}
相當於SELECT city,AVG(money) FROM table GROUP BY city; #分組聚合,會返回buckets,每個bucket裡有一個度量聚合
對比1和3,SELECT city,COUNT(*) FROM table GROUP BY city; #分組聚合,會返回buckets
SELECT city,AVG(money) FROM table GROUP BY city; #分組聚合,會返回buckets,每個bucket裡有一個度量聚合
SQL語句差不多,一個是統計每組記錄數,一個是統計每組錢的平均值,
但1只用了一次聚合,3在聚合裡用了一個子聚合
4.重點,並列的子聚合!
{
"aggs":{
"my_agg_name":{
"terms":{
"field":"city"
},
"aggs":{
"my_child_agg_name":{
"avg":{
"field":"money"
}
},
"my_child_agg_name2":{
"max":{
"field":"money"
}
}
}
}
}
}
相當於
SELECT city,AVG(money),MAX(money) FROM table GROUP BY city; #分組聚合,會返回buckets
結論:並列的子聚合之間其實沒有一點關係,都是對上一級的結果進行再操作。再舉個例子:
{
"aggs":{
"my_agg_name":{
"filter":{ //過濾,查詢所有
"query": {
"match_all": {}
}
},
"aggs":{
"name1_0":{ //並列的子聚合互不影響,對上一級的結果進行操作,按age分組,包含key是15和2的桶(只有15的桶)
"terms":{
"field":"age",
"include":[15,2]
}
},
"name1_4":{ //並列的子聚合互不影響,對上一級的結果進行操作,先過濾出年齡是15的,再按money分組(得到5個桶)
"filter":{
"query": {
"term": {
"age": 15
}
}
},
"aggs":{
"name1_4_0":{
"terms":{
"field":"money"
}
}
}
},
"name1_5":{ //並列的子聚合互不影響,對上一級的結果進行操作,先過濾出錢是4000的,再按age分組(得到1個桶)
"filter":{
"query": {
"term": {
"money": 4000
}
}
},
"aggs":{
"name1_5_0":{
"terms":{
"field":"age"
}
}
}
}
}
}
}
}
可以在筆記(一)插入的資料中跑跑上述程式碼,加深理解。相關文章
- Elasticsearch聚合學習之二:區間聚合Elasticsearch
- Elasticsearch學習筆記Elasticsearch筆記
- ElasticSearch 簡單的 搜尋 聚合 分析Elasticsearch
- Elasticsearch的配置學習筆記Elasticsearch筆記
- TDD學習筆記【二】---單元測試簡介筆記
- 《圖解HTTP》學習筆記(二):簡單的HTTP協議圖解HTTP筆記協議
- OCI介面學習筆記--基本理解(二)筆記
- Activiti學習筆記二:簡單順序流演示demo筆記
- Git 簡單使用學習筆記Git筆記
- elasticsearch學習筆記二:相關軟體安裝Elasticsearch筆記
- Java設計模式學習筆記(二) 簡單工廠模式Java設計模式筆記
- 學習筆記| AS入門(二) 簡單控制元件篇(上)筆記控制元件
- 學習筆記|AS入門(二) 簡單控制元件篇(下)筆記控制元件
- 學習筆記|AS入門(二) 簡單控制元件篇(上)筆記控制元件
- (學習筆記)python 對__init__的初步理解筆記Python
- elasticsearch學習筆記一:核心概念Elasticsearch筆記
- MYSQL學習筆記7: 聚合函式MySql筆記函式
- Elasticsearch聚合學習之一:基本操作Elasticsearch
- 學習筆記-React的簡單介紹&工作原理筆記React
- 學習筆記:11種行為型設計模式簡單對比筆記設計模式
- Elasticsearch入門學習重點筆記Elasticsearch筆記
- Elasticsearch聚合學習之四:結果排序Elasticsearch排序
- Elasticsearch聚合學習之三:範圍限定Elasticsearch
- SpringMVC學習筆記之---簡單入門SpringMVC筆記
- SG學習筆記之RMAN簡單歸納筆記
- batch normalization學習理解筆記BATORM筆記
- ANFIS學習筆記(二)筆記
- activiti學習筆記二筆記
- Typescript學習筆記(二)TypeScript筆記
- JavaScript學習筆記(二)JavaScript筆記
- React 學習筆記【二】React筆記
- goLang學習筆記(二)Golang筆記
- vue學習筆記二Vue筆記
- vue學習筆記(二)Vue筆記
- 科二學習筆記筆記
- jQuery 學習筆記(二)jQuery筆記
- git學習筆記(二)Git筆記
- Java學習筆記二Java筆記