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 的查询.有的时候分桶聚合之后会产生很多的桶,我们只对其中部分的桶关心. ...
随机推荐
- Swift编程语言(中文版)官方手册翻译(进度8.8%)
翻译着玩,进度会比较慢. 等不及的可以看CocoaChina翻译小组,他们正在组织翻译,而且人手众多,相信会提前很多完成翻译. 原文可以在iTunes免费下载 目前进度 7 JUN 2014: 8.8 ...
- React Native移动框架功能研究
React Native移动框架功能研究 此篇只研究React Native框架的功能. 一.React Natvie是什么 React Native是使用React(或者说JS)来开发原生APP的框 ...
- Windows Server 2008更改远程桌面端口号
windows 2008远程桌面端口默认是用的是3389端口,但是由于安全考虑,经常我们安装好系统后一般都会考虑把原来的3389端口更改为另外的端口. 更改过程: 打开注册表: 运行regedit 找 ...
- vCPU估算的几个基本概念
物理CPU数量:实际服务器插槽上的CPU个数: 核:一块CPU上面能处理数据的芯片组的数量: 超线程:在一个实体芯片组中提供两个逻辑线程: 逻辑CPU数量:物理CPU数量*核*超线程(若支持超线程,该 ...
- Java虚拟机1:什么是Java
前言 让我们来看一下Java的广告词,来自http://www.java.com/zh_CN/about/: 97%的企业桌面运行Java 美国有89%的桌面(或计算机)运行Java 全球有900万J ...
- gtest 1.7编译错误:std:tr1:tuple模板参数过多的解决方案
在gtest/gtest.h文件中添加如下代码 #define _VARIADIC_MAX 10
- 来看看Windows9到底是什么
今天有新闻一直在说windows 8.2 windows9,还给出了一张很有趣的图 我们就假设这张图是真的. 这张图透漏出两个信息 其一:开始菜单真的回来了. 不过还是不死心,绝不放弃开始屏,确实,开 ...
- ubuntu 13.04下MYSQL 5.5环境搭建
解决的问题: 安装mysql server和mysql client 5.5 新建远程账户 远程访问权限 MYSQL默认字符集修改为UTF8 检查防火墙 一.安装 BTW:可以使用查找命令查看安装包 ...
- 如何应用Font Awesome矢量字体图标
Font Awesome 是一套专门为 Twitter Boostrap 设计的图标字体库.这套图标字体集几乎囊括了网页中可能用到的所有图标,除了包括 Twitter Boostrap 的默认图标外, ...
- Lock,LockFree,MemoryBarrier,ConcurrentCollection
最近看并行编程书本的一些心得,简单记录下多线程和并行编程必知必会的几个概念,再次加深自己的理解. .NET Framework4提供了一个新的命名空间System.Collections.Concur ...