elasticsearch聚合--桶(Buckets)和指标(Metrics)的概念
写在前面的话:读书破万卷,编码如有神
--------------------------------------------------------------------
主要内容包括:
- 聚合的两个核心概念:桶(bucket)和指标(metric)
- 桶和指标的深入理解
- 示例说明

---------------------------------------------------------------------
1、聚合的两个核心概念
在Elasticsearch的聚合中需要掌握两个核心的概念:桶(bucket)、指标(metric)
桶(bucket): 满足特定条件的文档的集合
指标(metric): 对桶内的文档进行聚合分析的操作
(ps:每个聚合都是一个或者多个桶和零个或者多个指标的组合。)
翻译成粗略的SQL语句来解释的话:
SELECT COUNT(color) ---> 相当于指标
FROM table
GROUP BY color --->2 相当于桶
桶在概念上类似于SQL的分组(GROUP BY),而指标则类似于COUNT()、SUM()、MAX()等统计方法。
---------------------------------------------------------------------
2、桶和指标的深入理解
(1)桶
a、简单来说桶就是满足特定条件的文档的集合。
b、当聚合开始被执行,每个文档里面的值通过计算来决定符合哪个桶的条件,如果匹配到,文档将放入相应的桶并接着开始聚合操作。
c、桶也可以被嵌套在其他桶里面。
(2)指标
a、桶能让我们划分文档到有意义的集合,但是最终我们需要的是对这些桶内的文档进行一些指标的计算。分桶是一种达到目的地的手段:它提供了一种给文档分组的方法来让我们可以计算感兴趣的指标。
b、大多数指标是简单的数学运算(如:最小值、平均值、最大值、汇总),这些是通过文档的值来计算的。
(3)桶和指标的组合
聚合是由桶和指标组成的。聚合可能只有一个桶,可能只有一个指标,或者可能两个都有。也有可能一些桶嵌套在其他桶里面。
---------------------------------------------------------------------
3、举例说明
比如有如下的数据:
city name
北京 小李
北京 小王
上海 小张
上海 小丽
上海 小陈
基于city来划分buckets的话,可以划分出两个bucket:一个是北京bucket、一个是上海bucket
北京bucket:包含了2个人,小李、小王
上海bucket:包含了3个人,小张、小丽、小陈
按照某个字段进行bucket划分,那个字段的值相同的那些数据,就会被划分到一个bucket中。当我们有了一堆bucket之后,就可以对每个bucket中的数据聚合分析了,比如说计算一个bucket内所有数据的数量 ,或者计算一个bucket内所有数据的平均值、最大值、最小值。
metric : 就是对一个bucket执行的某种聚合分析的操作,比如说求平均值、最大值、最小值 。
上面利用elasticsearch的分组,可以转化成对应的sql语句如下:
select count(*) from access_log group by user_id
其中:bucket 相当于 group by user_id -->那些user_id相同的数据,就会被划分到一个bucket中
metric 相当于 count(*) -->对每个user_id bucket中所有的数据计算一个数量
elasticsearch聚合--桶(Buckets)和指标(Metrics)的概念的更多相关文章
- elasticsearch聚合操作——本质就是针对搜索后的结果使用桶bucket(允许嵌套)进行group by,统计下分组结果,包括min/max/avg
分析 Elasticsearch有一个功能叫做聚合(aggregations),它允许你在数据上生成复杂的分析统计.它很像SQL中的GROUP BY但是功能更强大. 举个例子,让我们找到所有职员中最大 ...
- ElasticSearch聚合(转)
ES之五:ElasticSearch聚合 前言 说完了ES的索引与检索,接着再介绍一个ES高级功能API – 聚合(Aggregations),聚合功能为ES注入了统计分析的血统,使用户在面对大数据提 ...
- ElasticSearch聚合
前言 说完了ES的索引与检索,接着再介绍一个ES高级功能API – 聚合(Aggregations),聚合功能为ES注入了统计分析的血统,使用户在面对大数据提取统计指标时变得游刃有余.同样的工作,你在 ...
- ElasticSearch聚合分析
聚合用于分析查询结果集的统计指标,我们以观看日志分析为例,介绍各种常用的ElasticSearch聚合操作. 目录: 查询用户观看视频数和观看时长 聚合分页器 查询视频uv 单个视频uv 批量查询视频 ...
- ES之五:ElasticSearch聚合
前言 说完了ES的索引与检索,接着再介绍一个ES高级功能API – 聚合(Aggregations),聚合功能为ES注入了统计分析的血统,使用户在面对大数据提取统计指标时变得游刃有余.同样的工作,你在 ...
- ElasticSearch 聚合函数
一.简单聚合 桶 :简单来说就是满足特定条件的文档的集合. 指标:大多数 指标 是简单的数学运算(例如最小值.平均值.最大值,还有汇总),这些是通过文档的值来计算. 桶能让我们划分文档到有意义的集合, ...
- ElasticSearch聚合分析API——非常详细,如果要全面了解的话,最好看这个
转自:http://www.tianyiqingci.com/2016/04/11/esaggsapi/ 前言 说完了ES的索引与检索,接着再介绍一个ES高级功能API – 聚合(Aggregatio ...
- Elasticsearch聚合问题
在测试Elasticsearch聚合的时候报了一个错误.具体如下: GET /megacorp/employee/_search { "aggs": { "all_int ...
- elasticsearch系列六:聚合分析(聚合分析简介、指标聚合、桶聚合)
一.聚合分析简介 1. ES聚合分析是什么? 聚合分析是数据库中重要的功能特性,完成对一个查询的数据集中数据的聚合计算,如:找出某字段(或计算表达式的结果)的最大值.最小值,计算和.平均值等.ES作为 ...
随机推荐
- Vue 脱坑记
问题汇总 Q:安装超时(install timeout) 方案有这么些: cnpm : 国内对npm的镜像版本 /* cnpm website: https://npm.taobao.org/ */ ...
- mysql安装后开启远程
操作系统为centos7 64 1.修改 /etc/my.cnf,在 [mysqld] 小节下添加一行:skip-grant-tables=1 这一行配置让 mysqld 启动时不对密码进行验证 2. ...
- flask插件系列之flask_cors跨域请求
前后端分离在开发调试阶段本地的flask测试服务器需要允许跨域访问,简单解决办法有二: 使用flask_cors包 安装 pip install flask_cors 初始化的时候加载配置,这样就可以 ...
- 【Git/GitHub学习笔记】一键更新多个git仓库至远程
因为同时在本地维护几个Github的仓库,每次更新后每个仓库要重复三步提交同步,有点麻烦. 发现可以写.sh文件来实现一键更新. 比如我要更新我的BlogBackup和CodeRepo两个仓库的代码如 ...
- C# 获取mp3文件的歌曲时间长度
添加命名空间: using Shell32; using System.Text.RegularExpressions;添加引用:COM组件的Microsoft Shell Control ...
- django 项目中的 favicon.ico 处理
django 项目中的 favicon.ico 处理 (django == 2.0.6) 1. 引入模块: from django.views.generic.base import Redirec ...
- 设置NGINX进程分配至多核CPU提升性能
Nginx 配置文件 nginx.conf 首先需要找到 Nginx 的配置文件 nginx.conf 才能进行下面的操作,在LNMP一键安装包默认配置下,nginx.conf 存放在/usr/loc ...
- 写在Web考试后的一点小总结
在实验室折腾附加题折腾了一个多钟没做出来……晚上回到宿舍决定再试一试,按原来的思路居然行了,目测在实验室的时候什么地方打错字了吧(心在流血) 实现晃过元素后出现跟随鼠标的悬浮窗,只有几行代码给我折腾了 ...
- pyqt5最简单操作数据库
要先安一个包才能使用QtSql通过新立得安装 import PyQt5.QtSql as sql db=sql.QSqlDatabase.addDatabase('QMYSQL') db.setDat ...
- Oracle 子查询和组函数练习
SELECT * FROM emp; SELECT * FROM dept; 1.查询公司员工工资的最大值,最小值,平均值和总和. SELECT MAX(sal) AS 工资最大值, MIN(sal) ...