聚合操作
1. 分組
GET /index/type/_search
{
"aggs": { //表示聚合分析操作
"group_by_tags": { //任意取的名字
"terms": { //選擇aggs的種類,即分組
"field": "tags" //指定field
}
}
}
}
最終根據(jù)tags得出每組的數(shù)量
2. 搜索+聚合
GET /index/type/_search
{
"size" : 0,
"query": {
"match": {
"name" : "element"
}
},
"aggs": {
"group_by_tags": {
"terms": {
"field":"tags"
}
}
}
}
就是簡單的先搜索后聚合
3.先分組,再算每組的平均值
GET /ecommerce/product/_search
{
"size": 0,
"aggs": {
"group_by_tags": {
"terms": {
"field": "tags",
"size": 10
},
"aggs": {
"avg_price": {
"avg": {
"field": "price"
}
}
}
}
}
}
用一種聚合嵌套的方式來實(shí)現(xiàn)。首先以tags分組,分組之后在使用aggs來計(jì)算每個(gè)組的價(jià)格平均值。
4. 排序需求
按照tags分組,并顯示每一組的平均價(jià)格。之后組的排序按照avg_price降序排列。
GET /commerce/producer/_search
{
"size": 0,
"aggs": {
"all_tags": {
"terms": {
"field" : "tags",
"order" : {"avg_price": "desc"}
},
"aggs" : {
"avg_price": {
"avg": {"field": "price"}
}
}
}
}
}
這種語法即在分組語句中加入order選項(xiàng)即可。
5.按照價(jià)格區(qū)間分組,每組內(nèi)按照tags分組。最后計(jì)算每組的平均價(jià)格。
GET /ecommerce/product/_search
{
"aggs": {
"group_by_price":{
"range": {
"field": "price",
"ranges": [
{
"from": 0,
"to": 20
},
{
"from": 20,
"to": 40
},
{
"from": 40,
"to": 60
}
]
},
"aggs": {
"group_by_tags": {
"terms": {
"field": "tags",
"size": 10
},
"aggs": {
"avg_price": {
"avg": {
"field": "price"
}
}
}
}
}
}
}
}