Elasticsearch 复合聚合:bucket_by_keys、date_histogram 等

在Elasticsearch中,聚合(Aggregation)是一种强大的功能,允许我们对数据进行复杂的分析和总结。其中,复合聚合(Composite Aggregations)是一种特别灵活的聚合方式,它可以将多个聚合类型组合在一起,以满足复杂的查询需求。本文将重点介绍bucket_by_keysdate_histogram这两种聚合类型,并展示它们在实际应用中的用法。

一、bucket_by_keys 聚合

bucket_by_keys 聚合允许我们根据一组预定义的键(keys)来创建存储桶(buckets)。这种聚合方式非常适合于当你已经知道要查询的特定值时。

示例

假设我们有一个包含用户信息的索引,我们想要根据用户的特定ID来分组统计这些用户的信息。

POST /users/_search
{"size": 0,"aggs": {"users_by_id": {"bucket_by_keys": {"buckets_path": "user_ids.hits.id.keyword","source": {"terms": {"field": "user_ids.keyword","size": 100}}},"aggs": {"user_details": {"top_hits": {"size": 1}}}}}
}

注意:上述示例中bucket_by_keys的使用并不直接存在于Elasticsearch的标准聚合中,这里是为了说明概念而虚构的。实际中,你可能需要使用terms聚合配合子聚合来实现类似的功能。

二、date_histogram 聚合

date_histogram 聚合是一种基于时间字段的直方图聚合,它允许我们按照指定的时间间隔(如年、月、日等)对数据进行分组。

示例

假设我们有一个销售数据的索引,每条记录都包含销售日期和销售额。我们想要按月份统计销售额。

POST /sales/_search
{"size": 0,"aggs": {"sales_over_time": {"date_histogram": {"field": "sale_date","interval": "month","format": "yyyy-MM","time_zone": "+08:00"},"aggs": {"total_sales": {"sum": {"field": "amount"}}}}}
}

在这个例子中,date_histogram 聚合按照月份对销售数据进行分组,并计算了每个月的总销售额。通过设置interval为"month",我们指定了分组的时间间隔。format字段定义了返回的日期格式,而time_zone则用于处理时区问题。

三、复合聚合的灵活性

虽然本文直接讨论了bucket_by_keys(假设存在)和date_histogram聚合,但Elasticsearch的复合聚合功能远不止于此。通过组合不同的聚合类型,我们可以构建出极其复杂的查询,以满足各种业务需求。

例如,我们可以先使用date_histogram聚合按时间分组数据,然后在每个时间桶内使用terms聚合对另一个字段进行分组,从而实现多级分组统计。

四、总结

Elasticsearch的聚合功能是其强大数据分析能力的核心。通过合理利用bucket_by_keys(假设)、date_histogram等聚合类型,我们可以轻松地实现复杂的数据分析和总结。在实际应用中,我们应该根据具体需求选择合适的聚合类型,并合理组合它们,以达到最佳的分析效果。

希望本文能够帮助你更好地理解Elasticsearch的复合聚合功能,并在实际项目中灵活运用。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

014-GeoGebra基础篇-快速解决滑动条的角度无法输入问题

有客户反馈,他的Geogebra一直有个bug,那就是输入角度最大值时总不按照他设定的展示,快被气炸了~ 目录 一、问题复现(1)插入一个滑动条(2)选择Angle(3)输入90,…

【SQL Server高可用性全解】构建永不宕机的数据库解决方案

标题:【SQL Server高可用性全解】构建永不宕机的数据库解决方案 SQL Server作为微软推出的关系型数据库管理系统,广泛应用于企业级应用中。在这些应用中,数据库的高可用性是至关重要的,它确保了数据的持久化存储和连续访问。本文…

华为OD机试c卷(100分)-数组连续和

题目描述 给定一个含有N个正整数的数组, 求出有多少个连续区间&#xff08;包括单个正整数&#xff09;, 它们的和大于等于x。 输入描述 第一行两个整数N x&#xff08;0 < N < 100000, 0 < x < 10000000) 第二行有N个正整数&#xff08;每个正整数小于等于100)…

复现centernet时,报错RuntimeError: CUDA error: out of memory

运行 python test.py ctdet --dataset coco --exp_id coco_dla --load_model /root/CenterNet/exp/ctdet/coco_dla/model_last.pth --gpus 0 --test_scales 1 报错下面&#xff1a; RuntimeError: CUDA error: out of memory明明显存是够用的 解决办法&#xff1a; 找到自己…

代码随想录——无重叠区间(Leetcode435)

题目链接 贪心 排序 class Solution {public int eraseOverlapIntervals(int[][] intervals) {int res 0;if(intervals.length 1 || intervals.length 0){return res;}// 按左边界排序Arrays.sort(intervals, new Comparator<int[]>() {public int compare(int[] …

Protobuf(三):理论学习,简单总结

1. Protocol Buffers概述 Protocol Buffers&#xff08;简称protobuf&#xff09;&#xff0c;是谷歌用于序列化结构化数据的一种语言独立、平台独立且可扩展的机制&#xff0c;类似XML&#xff0c;但比XML更小、更快、更简单protobuf的工作流程如图所示 1.1 protobuf的优点…

【第17章】MyBatis-Plus自动维护DDL

文章目录 前言一、功能概述二、注意事项三、代码示例四、实战1. 准备2. ddl配置类3. 程序启动4. 效果(数据库) 总结 前言 在MyBatis-Plus的3.5.3版本中&#xff0c;引入了一项强大的功能&#xff1a;数据库DDL&#xff08;数据定义语言&#xff09;表结构的自动维护。这一功能…

app一键退出功能---笔记

问题本质包含两个部分 1.一键结束当前所有的activity 2.一建结束当前的app进程 方式一,采用Activity的启动模式 SingleTask 将app入口的activity设置成singleTask模式,在xml中进行配置。 在activity中重写 onNewIntent(). 优点:使用方便简单, 缺点:1.规定了app入口a…

vite+vue3+nginx配置统一公共前缀

方案1&#xff1a;重定向 server {listen 80;server_name localhost;location / {root /usr/share/nginx/html;index index.html;}location /music/ {proxy_pass http://127.0.0.1:80/;} }方案2&#xff1a;vitenginx双重配置 在方案1中&#xff0c;我们虽然能够实现 通过 …

告别高查重率,AI降重工具帮你快速过关

高查重率是许多毕业生的困扰。通常&#xff0c;高查重率源于过度引用未经修改的参考资料和格式错误。传统的降重方法&#xff0c;如修改文本和增添原创内容&#xff0c;虽必要但耗时且成效不一。 鉴于此&#xff0c;应用AI工具进行AIGC降重成为了一个高效的解决方案。这些工具…

Cloudflare 推出一款免费对抗 AI 机器人的可防止抓取数据工具

上市云服务提供商Cloudflare推出了一种新的免费工具&#xff0c;可防止机器人抓取其平台上托管的网站以获取数据以训练AI模型。 一些人工智能供应商&#xff0c;包括谷歌、OpenAI 和苹果&#xff0c;允许网站所有者通过修改他们网站的robots.txt来阻止他们用于数据抓取和模型训…

Hutool构建树结构

引入依赖 <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>${hutool.version}</version> </dependency>测试 SpringBootTest public class HutoolTest {private List<Menu> me…

Word “当前页“ 与 “前一页“ (含部分内容)间有大半页空白,删除空白方法

鼠标光标选中需要向上移的句子&#xff0c;右键点击“段落”&#xff0c;然后在跳出的窗口中按照“换行和分页”中的红色方框内取消勾选后&#xff0c;点击确定即可。

预定义函数和自定义函数

预定义函数 理解&#xff1a;MySQL提供的函数&#xff0c;直接调用即可 注意1&#xff1a;函数使用select调用 注意2&#xff1a;函数必须有返回值 数学类函数 SELECT ABS(-100);# 获取绝对值 SELECT SQRT(9);# 获取平方根 SELECT MOD(10,3);# 获取余数 SELECT POW(3,3);#…

@化工人|人员定位系统如何选择?从了解定位技术开始

提及化工安全管理所面临的主要难题&#xff0c;大家往往会想到”人难管、事难办、责难负“这三难&#xff0c;而每一难都离不开”人“这个主体。因此&#xff0c;在企业日渐实现数字化转型的今天&#xff0c;越来越多的化工企业选择建设以人员定位系统为核心的企业安全生产信息…

实时数仓Hologres OLAP场景核心能力介绍

作者&#xff1a;赵红梅 Hologres PD OLAP典型应用场景与痛点 首先介绍典型的OLAP场景以及在这些场景上的核心痛点&#xff0c;OLAP典型应用场景很多&#xff0c;总结有四类&#xff1a;第一类是BI报表分析类&#xff0c;例如BI报表&#xff0c;实时大屏&#xff0c;数据中台等…

基于Python+Pytest+Playwright的UI自动化测试框架

文章目录 一、框架介绍二、实现功能三、框架目录结构四、依赖库五、安装教程六、如何创建用例1. 修改配置文件 `config.settings.py`2.删除框架中的示例用例数据3. 编写测试用例七、运行自动化测试方式一:使用pipenv管理虚拟环境1. 激活已存在的虚拟环境2. 运行方式二:依赖包…

Linux--V4L2应用程序开发(二)获取数据

一、采集数据流程 申请buffer用来放置摄像头数据 ioctl VIDIOC_REQBUFS&#xff1a;申请buffer&#xff0c;APP可以申请很多个buffer&#xff0c;但是驱动程序不一定能申请到 ioctl VIDIOC_QUERYBUF和mmap&#xff1a;查询buffer信息、映射 如果申请到了N个buffer&#xff0c…

Web前端开发——HTML快速入门

HTML&#xff1a;控制网页的结构CSS&#xff1a;控制网页的表现 一、什么是HTML、CSS &#xff08;1&#xff09;HTML &#xff08;HyperText Markup Languaqe&#xff1a;超文本标记语言&#xff09; 超文本&#xff1a;超越了文本的限制&#xff0c;比普通文本更强大。除了…