- 所謂
聚合
,就是在查詢完某些數據之后,進行 group by
等操作,並進行一系列的統計
- 基本語法如下:
POST /index/_search
{
"size":0,
"query":{
"match_all":{
}
},
"aggs":{
"group_by_model":{
"terms":{
"field":"red"
}
}
}
}

size
:不查詢任何數據,因為聚合操作主要是為了統計,查詢數據並沒有意義
match_all
:查詢所有
group_by_model
:相當於給 count(*)
起一個別名
field
:根據哪個字段聚合
統計每個type下的文檔數量
- 對應的 SQL 語句:select type,count(*) from artuicle group by type
POST /index/_search
{
"query":{
"match_all":{
}
},
"size":0,
"aggs":{
"types_count":{
"terms":{
"field":"types"
}
}
}
}

統計閱讀量大於100的文檔數量
POST /index/_search
{
"query":{
"range":{
"red":{
"gt":100
}
}
},
"size":0,
"aggs":{
"types_count":{
"terms":{
"field":"types"
}
}
}
}

- 除了統計數量以外,es 還支持
最大值
、最小值
、平均值
、總和
等操作
- 分別對應着 max、min、avg、sum,只需要把上面的
terms
換成這些關鍵字即可
bucket和metric
班級 |
姓名 |
一年級 |
BNTang |
一年級 |
李四 |
二年級 |
王五 |
二年級 |
趙六 |
二年級 |
田七 |
- 划分出來兩個
bucket
,一個一年級,一個是二年級
- 一年級
bucket
:包含了 2 個人,BNTang,李四
- 二年級
bucket
:包含了 3 個人,王五,趙六,田七
metric
:對數據分組執行的統計,比如說 最大值
、最小值
、總數
、平均值