Elasticsearch聚合 之 Range区间聚合
来源:互联网 发布:瓦尔特磨床编程难吗 编辑:程序博客网 时间:2024/05/16 10:43
Elasticsearch提供了多种聚合方式,能帮助用户快速的进行信息统计与分类,本篇主要讲解下如何使用Range区间聚合。
最简单的例子,想要统计一个班级考试60分以下、60到80分、80到100分,在ES中只要一个命令就可以轻松统计....
更多资料参考:Elasticsearch文档翻译
聚合例子
按照前言中的例子,可以执行下面的命令:
{ "aggs":{ "grade_ranges":{ "range":{ "field":"grade", "ranges":[ {"to":60}, {"from":60,"to":80}, {"from":80}] } } }}
得到如下的结果:
{ ... "aggregations":{ "price_ranges":{ "buckets":[ { "to":60, "doc_count":2 }, { "from":60, "to":80, "doc_count":32 }, { "from":80, "doc_count":14 } ] } }}
复杂点的例子,指定每个区间的名字
可以通过设置keyed:true,使每个区间都返回一个特定的名字:
{ "aggs":{ "price_ranges":{ "range":{ "field":"price", "keyed":true, "ranges":[ {"to":50}, {"from":50,"to":100}, {"from":100} ] } } }}
默认会按照区间命名:
{ ... "aggregations":{ "price_ranges":{ "buckets":{ "*-50.0":{ "to":50, "doc_count":2 }, "50.0-100.0":{ "from":50, "to":100, "doc_count":4 }, "100.0-*":{ "from":100, "doc_count":4 } } } }}
当然也可以指定区间的名字:
{ "aggs":{ "price_ranges":{ "range":{ "field":"price", "keyed":true, "ranges":[ {"key":"cheap","to":50}, {"key":"average","from":50,"to":100}, {"key":"expensive","from":100} ] } } }}
使用脚本
与其他的聚合类似,Range聚合支持脚本的使用:
{ "aggs":{ "price_ranges":{ "range":{ "script":"doc['price'].value", "ranges":[ {"to":50}, {"from":50,"to":100}, {"from":100} ] } } }}
文件脚本或者脚本值的操作都与其他的差不多,就不再赘述了。
聚合嵌套
通常在区间聚合中,都会嵌套子聚合,比如我们在每个区间中做统计stats聚合:
{ "aggs":{ "price_ranges":{ "range":{ "field":"price", "ranges":[ {"to":50}, {"from":50,"to":100}, {"from":100} ]}, "aggs":{ "price_stats":{ "stats":{ "field":"price" } } } } } }
那么得到的结果会如下所示:
{ "aggregations":{ "price_ranges":{ "buckets":[ { "to":50, "doc_count":2, "price_stats":{ "count":2, "min":20, "max":47, "avg":33.5, "sum":67 } }, { "from":50, "to":100, "doc_count":4, "price_stats":{ "count":4, "min":60, "max":98, "avg":82.5, "sum":330 } }, { "from":100, "doc_count":4, "price_stats":{ "count":4, "min":134, "max":367, "avg":216, "sum":864 } } ] } }}
如果不指定聚合的字段,那么默认会按照Range聚合的字段来做统计:
{ "aggs":{ "price_ranges":{ "range":{ "field":"price", "ranges":[ {"to":50}, {"from":50,"to":100}, {"from":100} ] }, "aggs":{ "price_stats":{ "stats":{} } } } }}
0 0
- Elasticsearch聚合 之 Range区间聚合
- Elasticsearch聚合 之 Ip Range IP地址范围聚合
- elasticsearch 之Aggregation聚合
- Elasticsearch聚合 之 DateRange日期范围聚合
- Elasticsearch聚合 之 Date Histogram聚合
- Elasticsearch聚合 之 Date Histogram聚合
- ElasticSearch核心基础之聚合
- Elasticsearch聚合
- Elasticsearch]聚合
- ElasticSearch聚合
- ElasticSearch聚合
- ElasticSearch之Java Api聚合分组实战
- ElasticSearch之Java Api聚合分组实战
- elasticsearch概念之索引、搜索和聚合
- [Elasticsearch] 聚合的测试数据
- Elasticsearch分组聚合-查询
- ElasticSearch聚合aggs入门
- Elasticsearch笔记-聚合
- Linux基本命令(一)
- sql集合操作
- R(四): R开发实例-map分布图
- 本人的嵌入式职业英文记录 - 第3周
- JS设置cookie、读取cookie、删除cookie
- Elasticsearch聚合 之 Range区间聚合
- 第三方工具库集锦
- R(六): RODBC 访问SqlServer
- 前端常用js插件总汇
- 蘑菇街直播实战技巧带你解决直播开发难题
- RecyclerView的学习与运用
- R(五): R常用函数
- Linux搜索文件的方法
- Java必备基础知识点