是时候用 ES 拯救发际线啦

ES如何统计某个字段最多的区间?

Elasticsearch | 作者 amonxu | 发布于2018年05月15日 | 阅读数:4747

举例数据如下:
id    name    score
1    zhangsan 85
2    lisi         70
3    wangwu  65
...
 
我想统计分数区间最多的数据,比如按10分为一段,
51-60有23人,
61-70有45人,
71-80有32人,
81-90有14人,
91-100有5人。
那么统计排名前2区间的就是:
61-70、71-80。
 
请问如何进行这种统计呢,谢谢!
已邀请:

laoyang360 - 《一本书讲透Elasticsearch》作者,Elastic认证工程师 [死磕Elasitcsearch]知识星球地址:http://t.cn/RmwM3N9;微信公众号:铭毅天下; 博客:https://elastic.blog.csdn.net

赞同来自: strglee amonxu

或者参考如下实现:
{
"size": 0,
"aggs": {
"buckets": {
"histogram": {
"field": "counter",
"interval": 10
},
"aggs": {
"top_hits_agg": {
"top_hits": {
"size": 2
}
}
}
}
}
}
思路:histogram分区间聚合
tophits取topX元素。

strglee

赞同来自: amonxu

{
"aggs" : {
"scores" : {
"histogram" : {
"field" : "score",
"interval" : 10
}
}
}
}

要回复问题请先登录注册