Elasticsearch 之聚合分析

本文主要介绍 Elasticsearch 的聚合功能,介绍什么是 Bucket 和 Metric 聚合,以及如何实现嵌套的聚合。

首先来看下聚合(Aggregation):

1 什么是 Aggregation?

在这里插入图片描述
首先举一个生活中的例子,这个是京东的搜索界面,在搜索框中输入“华为”进行搜索,就会得到如上界面,搜索框就是我们常用的搜索功能,而下面这些,比如分类、热点、操作系统、CPU 类型等是根据 ES 的聚合分析获得的相关结果。

看完上面这个例子,下面来看下聚合的定义:

ES 除了搜索以外,还提供针对 ES 数据进行统计分析的功能,也就是聚合,它的特点是实时性非常高,所有的计算结果都是即时返回的,而 Hadoop 等大数据系统得到一个统计结果需要一天的时间,一般都是 T + 1 级别的。

通过聚合,我们会得到一个数据的概览,是分析和总结全套的数据,而不是寻找单个文档,比如海淀区和东城区的客房数量,不同价格区间,可预订的经济型酒店和商务型酒店的数量,这样可以帮助我们过滤搜索的结果,这样的优点是性能高,只需要一条语句,就可以从 ES 得到分析结果,无需再客户端自己去实现分析逻辑。

在 ES 的聚合中主要一共分为四大类:

  • Bucket Aggregation:分桶类型,一些列满足特定条件的文档的集合
  • Metric Aggregation:指标分析类型,一些数学运算,可以对文档字段进行统计分+ 析,比如计算最大值、最小值、平均值等
  • Pipeline Aggregation:管道分析类型,对其他聚合结果进行二次聚合
  • Matrix Aggregation:矩阵分析类型,支持对多个字段的操作并提供一个结果矩阵

在以后的文章会对这些做详细的讲解,本文先来了解下什么是 Bucket 和 Metric:

Bucket 简单来说相当于 SQL 中的 GROUP,可以根据条件,把结果分成一个一个的组,那 Metric 相当于 SQL 中的 COUNT,可以去执行一系列的统计方法。

接下来看什么是 Bucket Aggregation:

2 Bucket Aggregation

在这里插入图片描述
Bucket 就是桶的意思,即按照一定的规则将文档分配到不同的桶中,达到分类分析的目的。如上图所示,左边有一堆文档,右边有三个桶,每个桶有不同的规则,比如第一个桶的规则为价格小于 3000 的,第二个桶为价格大于等于 3000 小于 6000 的,最后一个桶的规则为价格大于 6000 的,然后不同的文档根据不同的价格分到不同的桶中,那么我们就实现了分类。

有了 Bucket 聚合分析机制,我们就可以把公司员工以年龄方式进行区分,以地理位置的方式来区分客户,以男性女性来区分演员等。

根据 Bucket 的分桶策略,常见的 Bucket 聚合分析如下:

  • Terms:直接按照 term 来分桶,如果是 text 类型,则按照分词后的结果分桶
  • Range:指定数值的范围来设定分桶规则
  • Date Range:指定日期的范围来设定分桶规则
  • Histogram:直方图,以固定间隔的策略来分割数据
  • Date Histogram:针对日期的直方图或者柱状图,是时序数据分析中常用的聚合分析类型

下面以 Terms 为例,让我们动手实践下:
在这里插入图片描述
这是一个查看航班目的地的统计信息的例子,通过指定关键词为 terms,然后指明 term 字段 field 为 DestCountry,下面我们请求下,查看下请求结果:
在这里插入图片描述
从结果中可以看到文档根据目的地分成了不同的桶,每个桶还包括 doc_count,这样就可以很轻松知道 ES 存储的航班信息中,去往意大利、美国、中国等国家分别有多少架航班。

在简单了解了 Bucket 聚合分析后,让我们来看下 Metric 聚合分析:

3 Metric Aggregation

Metric 是基于数据集计算的结果,除了支持在字段上进行计算,同样也支持在脚本产生的结果之上进行计算。Metric 主要分为单值分析和多值分析,具体内容如下:

单值分析,只输出一个分析结果:

  • Min、Max、Avg、Sum
  • Cardinality

其中,Min、Max、Avg、Sum 这些很容易理解,在这里说一下 Cardinality,它是指不同数值的个数,相当于 SQL 中的 distinct。

多值分析,输出多个分析结果:

  • Stats、Extended Stats
  • Percentiles、Percentile Ranks
  • Top Hits

其中,Stats 是做多样的数据分析,可以一次性得到最大值、最小值、平均值、中值等数据;Extended Stats 是对 Stats 的扩展,包含了更多的统计数据,比如方差、标准差等;Percentiles 和 Percentile Ranks 是百分位数的一个统计;Top Hits 一般用于分桶后获取桶内最匹配的顶部文档列表,即详情数据。

了解之后,让我们实操起来,紧接着刚才查看航班目的地的统计信息的例子,如果还想知道机票的均价,最高最低价格,该怎么做呢?这就需要用到 Metric 了:
在这里插入图片描述
我们在请求中加入 aggs,其中 avg_price 为自己定义的名字,这个是为了方便在以后理解这个字段返回值的含义,然后分别关键词分别选择 avg、max、min 来完成计算目的地不同的航班的机票均价、最高最低价格,这个请求的执行结果如下所示:

在这里插入图片描述
从结果中可以看出,飞往意大利的航班一共有 2371 架,其中机票最高价格为 1195 元,最低价格为 100 元,平均价格为 586 元,很快就可以得到统计的一些结果。

另外,聚合分析还支持嵌套,那么让我们看下如果实现一个嵌套聚合分析:

在这里插入图片描述
通过这个请求不但可以获取到航班目的地的统计信息,还可以得到航班抵达时的天气状况,运行结果如下所示:
在这里插入图片描述
可以看出,在抵达意大利的航班中,抵达时的天气有 424 次为晴天,417 次为下雨天等,所以通过嵌套的方式就可以很快得到更深层次的数据统计值。

4 总结

本文对 Elasticsearch 的聚合功能做了初步介绍,也学习 Bucket 和 Metric 聚合分析,在后续文章会对聚合功能做一个更加深入的讲解。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/147441.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

haproxy端口耗尽no free ports

用haproxy配置负载均衡时出现端口不足错误;后端服务连接一会高一会儿低,从0到1w、2w跳变;实际连接数为4w左右; haproxy[8765]: Connect() failed for backend 09e581: no free ports. 问题描述 在请求很少的时候,工作…

搜维尔科技:【软件篇】TechViz是一款专为工程设计的专业级3D可视化软件

在沉浸式房间内深入研究您自己的 3D 数据 沉浸式房间是一个交互式虚拟现实空间,其中每个表面(墙壁、地板和天花板)都充当投影屏幕,创造高度沉浸式的体验。这就像您的 3D 模型有一个窗口,您可以在其中从不同角度走动、…

sMLP:稀疏全mlp进行高效语言建模

这是一篇2022由纽约州立大学布法罗分校和Meta AI发布的论文,它主要的观点如下: 具有专家混合(MoEs)的稀疏激活mlp在保持计算常数的同时显着提高了模型容量和表达能力。此外gMLP表明,所有mlp都可以在语言建模方面与transformer相匹配&#xf…

【Proteus仿真】【Arduino单片机】DHT11温湿度

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真Arduino单片机控制器,使用PCF8574、LCD1602液晶、DHT11温湿度传感器等。 主要功能: 系统运行后,LCD1602显示传感器采集温度和湿度。 二、软件设…

新版软考高项试题分析精选(三)

请点击↑关注、收藏,本博客免费为你获取精彩知识分享!有惊喜哟!! 1、项目整体管理要综合考虑项目各个相关过程,围绕整体管理特点,以下说法中,( )是不正确的。 A.项目的…

运动型蓝牙耳机什么牌子好?市面上热门的运动耳机推荐

​随着生活节奏的加快,越来越多的人开始关注健康和运动。而在运动的时候,佩戴耳机听音乐已经成为了很多人的选择。但是,市面上的运动耳机种类繁多,如何选择一款适合自己的呢?下面,我推荐几款市面上热门的运…

MySQL运算符

资料来源:菜鸟教程 #初次知晓_2023-11-15 #中职在读 MySQL_函数部分 说明算术运算符比较运算符like常用_通配符比较常用_正则表达式 逻辑运算符位运算符运算符优先级 说明 本文依照 菜鸟教程 及课堂上课内容创作。 作者水平有限,如有错误请提出 若本文侵权请联系我…

ceph 14.2.10 aarch64 非集群内 客户端 挂载块设备

集群上的机器测试 706 ceph pool create block-pool 64 64 707 ceph osd pool create block-pool 64 64 708 ceph osd pool application enable block-pool rbd 709 rbd create vdisk1 --size 4G --pool block-pool --image-format 2 --image-feature layering 7…

【vue+amap】高德地图绘制多边形区域

参考文档&#xff1a; 高德地图参考手册 高德地图示例代码 1、高德地图控制台创建应用&#xff0c;获取权限ak 高德地图控制台 Ps.本项目里按钮等基础控件使用的是element-ui版本控件 2、项目内全局引入 index.html内引入高德地图代码&#xff1a; <script type"te…

跟着基金买,别墅靠大海?买基金重仓股票,会破产吗?| 附最新选股结果

2020年A股经历了一波结构性牛市。 抱团核心资产的公募基金历史性大赚2万亿&#xff0c;一跃成为全市场顶流。不仅常年霸榜热搜&#xff0c;甚至连游戏直播的弹幕都在讨论基金。 很多年轻人也纷纷跑步入场&#xff0c;毕竟支付宝买基金贼方便。 可惜好景不长&#xff0c;大盘急…

V10chrony服务配置

Chrony简介 Chrony是一个开源自由的网络时间协议 NTP 的客户端和服务器软软件。它能让计算机保持系统时钟与时钟服务器&#xff08;NTP&#xff09;同步&#xff0c;因此让你的计算机保持精确的时间&#xff0c;Chrony也可以作为服务端软件为其他计算机提供时间同步服务。 Ch…

C 语言指针

C 语言指针 在本教程中&#xff0c;您将学习指针。什么是指针&#xff0c;如何使用它们以及在示例的帮助下使用它们时可能遇到的常见错误。 指针是 C和C 编程的强大功能。在学习指针之前&#xff0c;让我们学习一下C语言编程中的地址。 C 语言地址 如果程序中有变量var&am…

【NodeJS】Nodejs安装及环境配置

下载安装包 网址&#xff1a;https://nodejs.org/en 安装程序 1.下载完成后&#xff0c;双击安装包&#xff0c;进行安装&#xff0c;一路默认配置 nxet 即可&#xff0c;安装路劲给默认在C盘&#xff0c;或者选择其他位置&#xff0c;当前教程默认C盘 2.下图根据本身的…

Mybatis报错找不到参数解决之编译保留参数名称

Hi, I’m Shendi Mybatis报错找不到参数解决之编译保留参数名称 需求场景 在使用 Mybatis 的过程中&#xff0c;对于函数参数&#xff0c;通常会加上 Param 注解来给参数命名&#xff0c;以让 Mybatis 找到参数。 有的时候忘记添加&#xff0c;执行时就会报找不到参数的错误&…

Python接口测试框架选择之pytest+yaml+Allure!

一、为什么选择pytest&#xff1f; pytest完全兼容python自带的unittest pytest让单元测试更简单&#xff0c;能很好的管理测试用例。 对于实现接口测试的复杂场景&#xff0c;pytest的fixture、PDB等高阶用法都能实现需求。 入门简单&#xff0c;对于代码基础薄弱的团队人…

Live800:客服中心必备的7种客户服务原则

在现代商业社会中&#xff0c;客户服务已经成为企业竞争的重要因素之一。提供高质量的客户服务可以帮助企业赢得客户的忠诚度和信任&#xff0c;从而推动企业的发展。客服中心是企业与客户之间的桥梁&#xff0c;对于客户服务的质量要求更高。为了提高客服中心的服务质量&#…

Pandas教程(非常详细)(第六部分)

接着Pandas教程&#xff08;非常详细&#xff09;&#xff08;第五部分&#xff09;&#xff0c;继续讲述。 三十一、Pandas Excel读写操作详解 Excel 是由微软公司开发的办公软件之一&#xff0c;它在日常工作中得到了广泛的应用。在数据量较少的情况下&#xff0c;Excel 对…

移动端APP版本治理

1 背景 在许多公司&#xff0c;APP版本都是不受重视的&#xff0c;产品忙着借鉴&#xff0c;开发埋头编码&#xff0c;测试想着不粘锅。 只有在用户反馈app不能用的时候&#xff0c;你回复客服说&#xff0c;让用户升级最新版本&#xff0c;是不是很真实。 而且业界也很少有…

SpringEvent事件通知机制

“Spring Event” 是 Spring 框架通过事件驱动的编程模型来处理应用程序中的事件。开发者可以定义自己的事件&#xff0c;然后在应用程序中触发这些事件。Spring 框架提供了用于发布和监听事件的机制&#xff0c;以实现松散耦合的组件间通信。 有两个核心组件&#xff1a; 事…

基于springboot实现校园医疗保险管理系统【项目源码】计算机毕业设计

基于springboot实现校园医疗保险管理系统演示 系统开发平台 在线校园医疗保险系统中&#xff0c;Eclipse能给用户提供更多的方便&#xff0c;其特点一是方便学习&#xff0c;方便快捷&#xff1b;二是有非常大的信息储存量&#xff0c;主要功能是用在对数据库中查询和编程。其…