Elasticsearch聚合 之 Range区间聚合
Elasticsearch提供了多种聚合方式,能帮助用户快速的进行信息统计与分类,本篇主要讲解下如何使用Range区间聚合。
最简单的例子,想要统计一个班级考试60分以下、60到80分、80到100分,在ES中只要一个命令就可以轻松统计....
更多资料参考:Elasticsearch文档翻译
聚合例子
按照前言中的例子,可以执行下面的命令:
{
"aggs":{
"grade_ranges":{
"range":{
"field":"grade",
"ranges":[
{"to":},
{"from":,"to":},
{"from":}]
}
}
}
}
得到如下的结果:
{
...
"aggregations":{
"price_ranges":{
"buckets":[
{
"to":,
"doc_count":
},
{
"from":,
"to":,
"doc_count":
},
{
"from":,
"doc_count":
}
]
}
}
}
复杂点的例子,指定每个区间的名字
可以通过设置keyed:true,使每个区间都返回一个特定的名字:
{
"aggs":{
"price_ranges":{
"range":{
"field":"price",
"keyed":true,
"ranges":[
{"to":},
{"from":,"to":},
{"from":}
]
}
}
}
}
默认会按照区间命名:
{
...
"aggregations":{
"price_ranges":{
"buckets":{
"*-50.0":{
"to":,
"doc_count":
},
"50.0-100.0":{
"from":,
"to":,
"doc_count":
},
"100.0-*":{
"from":,
"doc_count":
}
}
}
}
}
当然也可以指定区间的名字:
{
"aggs":{
"price_ranges":{
"range":{
"field":"price",
"keyed":true,
"ranges":[
{"key":"cheap","to":},
{"key":"average","from":,"to":},
{"key":"expensive","from":}
]
}
}
}
}
使用脚本
与其他的聚合类似,Range聚合支持脚本的使用:
{
"aggs":{
"price_ranges":{
"range":{
"script":"doc['price'].value",
"ranges":[
{"to":},
{"from":,"to":},
{"from":}
]
}
}
}
}
文件脚本或者脚本值的操作都与其他的差不多,就不再赘述了。
聚合嵌套
通常在区间聚合中,都会嵌套子聚合,比如我们在每个区间中做统计stats聚合:
{
"aggs":{
"price_ranges":{
"range":{
"field":"price",
"ranges":[
{"to":},
{"from":,"to":},
{"from":}
]},
"aggs":{
"price_stats":{
"stats":{
"field":"price"
}
}
}
}
}
}
那么得到的结果会如下所示:
{
"aggregations":{
"price_ranges":{
"buckets":[
{
"to":,
"doc_count":,
"price_stats":{
"count":,
"min":,
"max":,
"avg":33.5,
"sum":
}
},
{
"from":,
"to":,
"doc_count":,
"price_stats":{
"count":,
"min":,
"max":,
"avg":82.5,
"sum":
}
},
{
"from":,
"doc_count":,
"price_stats":{
"count":,
"min":,
"max":,
"avg":,
"sum":
}
}
]
}
}
}
如果不指定聚合的字段,那么默认会按照Range聚合的字段来做统计:
{
"aggs":{
"price_ranges":{
"range":{
"field":"price",
"ranges":[
{"to":},
{"from":,"to":},
{"from":}
]
},
"aggs":{
"price_stats":{
"stats":{}
}
}
}
}
}
Elasticsearch聚合 之 Range区间聚合的更多相关文章
- Elasticsearch聚合 之 Date Histogram聚合
Elasticsearch的聚合主要分成两大类:metric和bucket,2.0中新增了pipeline还没有研究.本篇还是来介绍Bucket聚合中的常用聚合--date histogram.参考: ...
- Elasticsearch 第六篇:聚合统计查询
h2.post_title { background-color: rgba(43, 102, 149, 1); color: rgba(255, 255, 255, 1); font-size: 1 ...
- Elasticsearch学习系列四(聚合搜索)
聚合分析 聚合分析是数据库中重要的功能特性,完成对一个查询的集中数据的聚合计算.如:最大值.最小值.求和.平均值等等.对一个数据集求和,算最大最小值等等,在ES中称为指标聚合,而对数据做类似关系型数据 ...
- ElasticSearch 2 (35) - 信息聚合系列之近似聚合
ElasticSearch 2 (35) - 信息聚合系列之近似聚合 摘要 如果所有的数据都在一台机器上,那么生活会容易许多,CS201 课商教的经典算法就足够应付这些问题.但如果所有的数据都在一台机 ...
- elasticsearch聚合之bucket terms聚合
目录 1. 背景 2. 前置条件 2.1 创建索引 2.2 准备数据 3. 各种聚合 3.1 统计人数最多的2个省 3.1.1 dsl 3.1.2 运行结果 3.2 统计人数最少的2个省 3.2.1 ...
- Flask聚合函数(基本聚合函数、分组聚合函数、去重聚合函数))
Flask聚合函数 1.基本聚合函数(sun/count/max/min/avg) 使用聚合函数先导入:from sqlalchemy import func 使用方法: sun():func.sum ...
- Elasticsearch聚合 之 Histogram 直方图聚合
Elasticsearch支持最直方图聚合,它在数字字段自动创建桶,并会扫描全部文档,把文档放入相应的桶中.这个数字字段既可以是文档中的某个字段,也可以通过脚本创建得出的. 桶的筛选规则 举个例子,有 ...
- Elasticsearch 聚合统计与SQL聚合统计语法对比(一)
Es相比关系型数据库在数据检索方面有着极大的优势,在处理亿级数据时,可谓是毫秒级响应,我们在使用Es时不仅仅进行简单的查询,有时候会做一些数据统计与分析,如果你以前是使用的关系型数据库,那么Es的数据 ...
- 把 Elasticsearch 当数据库使:聚合后排序
使用 https://github.com/taowen/es-monitor 可以用 SQL 进行 elasticsearch 的查询.有的时候分桶聚合之后会产生很多的桶,我们只对其中部分的桶关心. ...
随机推荐
- SQL Server 常用分页SQL
今天无聊和朋友讨论分页,发现网上好多都是错的.网上经常查到的那个Top Not in 或者Max 大部分都不实用,很多都忽略了Order和性能问题.为此上网查了查,顺带把2000和2012版本的也补上 ...
- 基于jquery的图片轮播 (IE8以上)
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- 使用SQLIO测试磁盘性能
SQLIO 是一个用于测试存储系统能力的命令行工具,用以获取存储系统相关的性能指标,以判断系统的 I/O 处理能力. 在微软的网站可以下载 SQLIO 的安装包,安装后目录中会出现如下文件: EULA ...
- Guava-Optional可空类型
接上篇Guava之Joiner和Splitter,本篇将介绍Guava的另外一个有用的对象Optional,这在Java中Google Guava首先给我们提出可空对象模型的.在其他语言如c#这是已经 ...
- Java提高篇(三一)-----Stack
在Java中Stack类表示后进先出(LIFO)的对象堆栈.栈是一种非常常见的数据结构,它采用典型的先进后出的操作方式完成的.每一个栈都包含一个栈顶,每次出栈是将栈顶的数据取出,如下: Stack通过 ...
- 将网站添加到iPhone的主屏幕上
我之前有篇文章介绍过如何将网站固定到Windows的开始菜单,并可以自定义图标.颜色以及Windows推送通知,其实Apple也有类似的功能,通过在网页的head部分添加link标记,在Safari浏 ...
- win7-VS2010-IIS网站的发布问题
前提:IIS配置已经完成 问题描述:我们在机房实验里,大家的都可以访问同学A发布的IIS网站,但是,A却不能访问我们每个人的网站,而我们也不能互相访问(除了A). 问题解决:忙乎了半天,原来A同学的防 ...
- Java基础之网络编程
网络编程:1.网络编程概述 (1)网络模型 OSI参考模型 TCP/IP参考模型 (2)网络通讯要素 IP地址 端口号 传输协议 (3)网络通讯前提: **找到对方IP **数据要发送到指定端口.为了 ...
- 1027 HTML的初学
HTML 是一种超文本标记语言内容(Hyper Text Markup Language) CSS 网页美化 Javascript 脚本语言(JS) H ...
- jQuery 滚动条 滚动到底部(下拉到底部) 加载数据(触发事件、处理逻辑)、分页加载数据
1.针对浏览器整个窗口滚动 主要代码: <script type="text/javascript"> ; function GetProductListPageFun ...