Elasticsearch Rest风格操作(三)聚合函数
1、修改mapping
PUT /forum/article/_mapping
{
"properties": {
"tag":{
"type": "text",
"fielddata": true
}
}
}
2、aggs 分组统计
## 最基础的分组统计
GET /forum/article/_search
{
"size": 0,
"aggs": {
"suibian": {
"terms": {
"field": "tag"
}
}
}
}
## 查询后,再分组统计
GET /forum/article/_search
{
"size": 0,
"query": {
"match": {
"name": "yagao"
}
},
"aggs": {
"suibian": {
"terms": {
"field": "tag"
}
}
}
}
## 先分组,再对分组算平均值
GET /forum/article/_search
{
"size": 0,
"aggs": {
"suibian": {
"terms": {
"field": "tag"
},
"aggs": {
"pingjun": {
"avg": {"field": "price"}
}
}
}
}
}
## 先分组,再对分组算平均值,再降序排序
GET /forum/article/_search
{
"size": 0,
"aggs": {
"suibian": {
"terms": {
"field": "tag","order": {
"pingjun": "desc"
}
},
"aggs": {
"pingjun": {
"avg": {"field": "price"}
}
}
}
}
}
## 按照指定的价格范围区间分组,然后再每组内按照tag进行分组,最后计算每组平均价格
GET /forum/article/_search
{
"size": 0,
"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"
},
"aggs": {
"avg_price": {
"avg": {
"field": "price"
}
}
}
}
}
}
}
}