ES的聚合分析和钻取功能
第一:计算每个兴趣点的同学个数
GET /employee/user/_search
{
"size": 0,
"aggs": {
"group_by_join": {
"terms": {
"field": "join"
}
}
}
}
运行以后就出现了如下的错误,这个上面标红的那个地方讲到了需要将这个参数设置为true
这是由于fielddata是默认关闭的,需要在mapping的时候开启
开启的方法有
PUT /employee/_mapping/user
{
"properties": {
"join": {
"type": "text",
"fielddata": true
}
}
}
再次查询的结果:
第二个:对家庭地址是beijing的,计算兴趣地的数量
GET /employee/user/_search
{
"size": 0,
"query": {
"match": {
"addr": "beijing"
}
},
"aggs": {
"all_join": {
"terms": {
"field": "join"
}
}
}
}
查询结果
第三:先分组,再计算每组的平均值,计算每个join下面china的平均值
GET /employee/user/_search
{
"size": 0,
"aggs": {
"group_by_join": {
"terms": {
"field": "join"
},
"aggs": {
"avg_china": {
"avg": {
"field": "china"
}
}
}
}
}
}
运行结果
第四:计算每个join下的china平均成绩,并且按照平均成绩降序排序
GET /employee/user/_search
{
"size": 0,
"aggs": {
"group_by_join": {
"terms": {
"field": "join",
"order": {
"avg_china": "desc"
}
},
"aggs": {
"avg_china": {
"avg": {
"field": "china"
}
}
}
}
}
}
运行结果如下
第五:按照指定价格的范围区间进行分组,然后几个每组内join进行分组,最后计算每组的平均成绩
GET /employee/user/_search
{
"size": 0,
"aggs": {
"groupByChina": {
"range": {
"field": "china",
"ranges": [
{
"from": 50,
"to": 60
},
{
"from": 60,
"to": 70
},
{
"from": 70,
"to": 80
}
]
},
"aggs": {
"groupByjoin": {
"terms": {
"field": "join"
},
"aggs": {
"avgChina": {
"avg": {
"field": "china"
}
}
}
}
}
}
}
}
运行结果如下