当前位置: 首页 > news >正文

谷粒商城实战笔记-118-全文检索-ElasticSearch-进阶-aggregations聚合分析

文章目录

  • 一,基本概念
    • 主要聚合类型
  • 二,实战
    • 1,搜索 address 中包含 mill 的所有人的年龄分布以及平均年龄,但不显示这些人的详情
    • 2,按照年龄聚合,并且请求每个年龄的平均薪资

Elasticsearch 的聚合(Aggregations)功能允许用户对数据集进行聚合分析,从而获得数据的摘要信息。

聚合应用于搜索结果,帮助用户理解数据的分布、统计和模式。

一,基本概念

聚合提供了从数据中分组和提取数据的能力。聚合类似于 SQL GROUPBY 和 SQL 聚合函数。

  • 桶(Buckets):桶是聚合的基础,用于将数据分组。每个桶代表一个分组,可以基于不同的标准,如日期范围、数值范围、术语等。
  • 度量(Metrics):度量聚合用于计算数值字段的统计数据,如总和、平均值、最小值、最大值、计数等。
  • 管道聚合(Pipeline Aggregations):管道聚合是对其他聚合结果进行二次处理的聚合,如计算移动平均值、百分比变化等。
  • 子聚合(Sub-Aggregations):子聚合允许在桶内部进一步细分数据,可以嵌套使用。

主要聚合类型

  1. terms:基于字段的术语进行分组,并为每个术语提供度量(如计数)。
  2. histogram:基于数值字段创建数值区间(桶),并计算每个区间内的文档数量。
  3. date_histogram:类似于histogram,但是专门用于日期字段,可以按照年、月、日等时间单位分组。
  4. range:基于指定的范围表达式对数值或日期字段进行分组。
  5. significant_terms:找出在特定数据集中出现的显著术语,与常规terms聚合不同,它基于统计测试来确定哪些术语是显著的。
  6. cardinality:提供一个字段中唯一值的近似计数,这个聚合类型对于大数据集很有用,因为它比普通的unique计数更高效。
  7. avgsumminmax:这些聚合类型分别计算数值字段的平均值、总和、最小值和最大值。
  8. statsextended_stats:提供数值字段的多种统计信息,包括平均值、总和、最小值、最大值、标准差等。

二,实战

以下Demo都是基于对索引bank的搜索。

1,搜索 address 中包含 mill 的所有人的年龄分布以及平均年龄,但不显示这些人的详情

GET bank/_search
{"query": {"match": {"address": "mill"}},"aggs": {"group_by_state": {"terms": {"field": "age"}},"avg_age": {"avg": {"field": "age"}}},"size": 0
}
  • query:定义了搜索的具体条件。

    • match:这是一个全文搜索查询,用于搜索address字段中包含"mill"的文档。
  • aggs:定义了聚合操作,用于对搜索结果进行分组和统计分析。

    • group_by_state:这是一个terms聚合,命名为group_by_state(注意,则个名称是自定义的,不是标准字段),它将结果基于age字段的术语进行分组,并为每个年龄提供计数。
      • terms:指定使用age字段进行分组并统计文档数量。
    • avg_age:这是一个度量聚合,命名为avg_age(也是自定义名称),用于计算所有匹配文档的age字段的平均值。
      • avg:指定聚合类型为平均值。
  • size:指定返回的文档数量。在这里设置为0,表示不返回任何匹配的文档,只返回聚合结果。

查询解释

  • 这个查询将返回所有address字段包含"mill"的文档,但不会返回这些文档本身,只返回基于这些文档的聚合分析结果。

聚合解释

  • group_by_state聚合将为每个不同的年龄值创建一个桶,并计算每个年龄组中有多少文档。例如,如果有多个文档的age字段是30,它们将被归为一个桶,并且这个桶的计数将是这些文档的数量。
  • avg_age聚合将计算所有匹配文档的age字段的平均值,提供一个单一数值,表示所有这些文档年龄的平均。

查询结果:

聚合结果包含在响应体中的aggregations对象中,这个对象中有我们命名的两个属性avg_agegroup_by_state,属性值包含聚合结果。
在这里插入图片描述

2,按照年龄聚合,并且请求每个年龄的平均薪资

这是一个桶聚合,先按照年龄分桶,统计每个年龄的人数,然后统计每个桶内的人的平均薪资。

注意下面的写法,最外层聚合是按照年龄分桶,嵌套子聚合是外层聚合的基础上统计桶内人的平均薪资。

GET bank/_search
{"query": {"match_all": {}},"aggs": {"group_by_age": {"terms": {"field": "age"},"aggs": {"avg_balance": {"avg": {"field": "balance"}}}}},"size": 0
}
  • query:定义了搜索的具体条件。

    • match_all:这是一个查询,它匹配所有文档。这意味着搜索结果将包括bank索引中的所有文档。
  • aggs:定义了聚合操作,用于对搜索结果进行分组和统计分析。

    • group_by_age:这是一个terms聚合,它将结果基于age字段的值进行分组。
      • terms:指定使用age字段进行分组,这将创建一个桶为每个不同的年龄值。
      • aggs:在这个terms聚合内部,定义了一个子聚合avg_balance
        • avg_balance:这是一个度量聚合,用于计算每个年龄组的账户余额(balance字段)的平均值。
          • avg:指定聚合类型为平均值,计算每个年龄桶中balance字段的平均数。
  • size:指定返回的文档数量。在这里设置为0,表示不返回任何匹配的文档,只返回聚合结果。

聚合解释

  • group_by_age聚合将为每个不同的年龄值创建一个桶,并计算每个年龄组中的文档数量。
  • 在每个年龄桶内,avg_balance子聚合将计算该年龄组内所有文档的balance字段的平均值。

这个DSL的用例是分析银行索引中不同年龄段的平均账户余额。结果将展示每个年龄组的账户平均余额,这可以用于了解不同年龄段的财务状况或进行市场分析。

相关文章:

谷粒商城实战笔记-118-全文检索-ElasticSearch-进阶-aggregations聚合分析

文章目录 一,基本概念主要聚合类型 二,实战1,搜索 address 中包含 mill 的所有人的年龄分布以及平均年龄,但不显示这些人的详情2,按照年龄聚合,并且请求每个年龄的平均薪资 Elasticsearch 的聚合&#xff0…...

ansible,laas,pass,sass

ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。ansible是基于 paramiko 开发的,并且基于模块化工作…...

【开源分享】PHP在线提交工单源码|工单管理系统源码 (附源码搭建教程)

一、设备报修工作内容 1.工单管理:设备报修系统可以将设备故障统计为工单并对工单进行汇总管理。将工单数据进行归类,将故障分类进行查看、统计、分析等等。 2.设备状态:工单可通过用户上报设备状态数据进行查看,维修工程师在维…...

【深入探秘Hadoop生态系统】全面解析各组件及其实际应用

深入探秘Hadoop生态系统:全面解析各组件及其实际应用 引言 在大数据时代,如何高效处理和存储海量数据成为企业面临的重大挑战。根据Gartner的统计,到2025年,全球数据量将达到175泽字节(ZB),传…...

Flink DataStream API编程入门

目录 什么是数据流 Flink程序的剖析 获取执行环境 加载/创建初始数据 指定对该数据的转换 指定把计算结果放在哪里 触发程序执行 案例 Flink中的数据流(DataStream)程序是在数据流上实现转换(transformations)的常规程序(例如,过滤,更新状态,定义窗口,…...

案例分享|Alluxio在自动驾驶数据闭环中的应用

分享嘉宾: 孙涛 - 中汽创智智驾工具链数据平台开发专家 关于中汽创智: 中汽创智科技有限公司(以下简称“中汽创智”)由中国一汽、东风公司、南方工业集团、长安汽车和南京江宁经开科技共同出资设立。聚焦智能底盘、新能动力、智…...

为什么选择 Baklib 而不是 Salesforce 进行知识库管理

对于希望管理其产品和服务的在线文档或知识库以支持其客户和员工的组织来说,市场上有太多的平台和工具。知识库通过向客户和员工提供重要信息来帮助组织提高生产力。这大致分为客户关系管理或客户服务。 很少有平台能够为销售、客户服务等提供一套服务。Salesforce…...

【C++11】解锁C++11新纪元:深入探索Lambda表达式的奥秘

📝个人主页🌹:Eternity._ ⏩收录专栏⏪:C “ 登神长阶 ” 🤡往期回顾🤡:C11右值引用 🌹🌹期待您的关注 🌹🌹 ❀C11 📒1. 可变参数模板…...

c语言排序(2)

前言 在上一篇文章,我们学习了插入排序,选择排序以及交换排序中的冒泡排序,接下来我们继续学习交换排序、归并排序以及非比较排序。 1. 快速排序 快速排序是交换排序的一种,它的基本思想:任取待排序序列中的某元素作…...

vue3+ts+element plus开源框架基础

Vue 3、TypeScript 和 Element Plus 的结合为现代前端应用开发提供了强大的支持。以下是关于这三者结合的基础介绍: 1. Vue 3 Vue 3 是一个流行的开源JavaScript框架,用于构建用户界面和单页面应用。它带来了许多新特性和改进,包括&#xf…...

RabbitMQ快速入门(MQ的概念、安装RabbitMQ、在 SpringBoot 项目中集成 RabbitMQ )

文章目录 1. 补充知识:同步通讯和异步通讯1.1 同步通讯1.2 异步通讯 2. 同步调用的缺点2.1 业务耦合2.2 性能较差2.3 级联失败 3. 什么情况下使用同步调用4. 异步调用5. 异步调用的优点和缺点5.1 异步调用的优点5.1.1 解除耦合,拓展性强5.1.2 无需等待&a…...

Linux文件与目录管理命令 ls cp rm mv使用方法

Linux文件与目录的管理基本上包括:显示属性、复制、删除、移动文件与目录等,由于文件与目录的管理不仅重要而且操作频繁,所以本文列举一些常用的管理命令。 如需了解路径的概念及目录的基本操作,可参考【Linux】路径的概念及目录的…...

KubeSphere 部署的 Kubernetes 集群使用 GlusterFS 存储实战入门

转载:KubeSphere 部署的 Kubernetes 集群使用 GlusterFS 存储实战入门 知识点 定级:入门级 GlusterFS 和 Heketi 简介 GlusterFS 安装部署 Heketi 安装部署 Kubernetes 命令行对接 GlusterFS 实战服务器配置(架构1:1复刻小规模生产环境,…...

elasticsearch源码分析-08Serch查询流程

Serch查询流程 查询请求Rest路由注册也是在actionModule中 //查询操作 registerHandler.accept(new RestSearchAction());Override public List<Route> routes() {return unmodifiableList(asList(new Route(GET, "/_search"),new Route(POST, "/_searc…...

【协作提效 Go - gin ! swagger】

什么是swagger Swagger 是一个用于设计、构建、记录和使用 RESTful Web 服务的工具集。它的主要作用包括&#xff1a; API 文档生成&#xff1a;Swagger 可以自动生成详细的 API 文档&#xff0c;包括每个端点的请求和响应格式、参数、状态码等。这使得开发者和用户可以轻松理…...

栈和队列——3.滑动窗口最大值

力扣题目链接 给定一个数组 nums&#xff0c;有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值。 示例&#xff1a; 输入&#xff1a;nums[1,3,-1,-3,5,3,6,7],k 3 …...

嵌入式智能手表开发系列文章之开篇

不好意思&#xff0c;朋友们&#xff0c;我回来了。想想已经断更了好久了。在这段断更的日子里。开拓了个新领域&#xff0c;不搞android 产品&#xff0c;而是去搞嵌入式智能手表啦。 接下来我会用几篇文章来介绍下我对这个领域的看法体会&#xff0c;以及我自己所负责领域的…...

24.8.2数据结构|双链表

双链表 1、定义结构&#xff1a;2个指针域、数据域 2、初始化&#xff1a;创建一个含有N个结点的带头结点双链表head &#xff08;双链表头结点的前驱与和尾节点的后继与置为空&#xff09; 3、求表长&#xff1a;返回双链表head的长度 4、取元素&#xff1a;取出双链表head中…...

RabbitMQ高级特性 - 事务消息

文章目录 RabbitMQ 事务消息概述实现原理代码实现不采用事务采用事务 RabbitMQ 事务消息 概述 RabbitMQ 的 AMQP 协议实现了事务机制&#xff0c;允许开发者保证消息的发送和接收时原子性的&#xff0c;也就是说&#xff0c;要么消息全都发送成功&#xff0c;要么全都发送失败…...

leetcode:心算挑战

题目&#xff1a; 心算项目的挑战比赛中&#xff0c;要求选手从N张卡牌中选出cnt张卡牌&#xff0c;若这cnt张卡牌数字总和为偶数&#xff0c;则选手成绩「有效」且得分为cnt张卡牌数字总和。给定数组cards和cnt&#xff0c;其中cards[i]表示第i张卡牌上的数字。 请帮参赛选手计…...

Rasa Pro企业级对话AI实战:从安全扫描到密钥管理的完整配置指南

Rasa Pro企业级对话AI实战&#xff1a;从安全扫描到密钥管理的完整配置指南 在金融行业数字化转型浪潮中&#xff0c;智能对话系统已成为客户服务的核心组件。作为Rasa的商业化企业版本&#xff0c;Rasa Pro凭借其专业级的安全防护和可观测性功能&#xff0c;正在成为银行、保险…...

新手必看:用快马AI生成HTML链接代码示例,轻松掌握网页跳转

今天想和大家分享一个特别适合新手入门HTML链接标签的小技巧。作为一个刚接触前端开发的小白&#xff0c;我发现理解各种链接的写法其实并不难&#xff0c;关键是要有直观的示例和实时反馈。最近在InsCode(快马)平台上尝试用AI生成代码&#xff0c;发现它特别适合用来学习基础H…...

多轴点焊机器人产业动能强劲:538.2亿元市场规模奠基,2032年将跃升至近1154.9亿元

据恒州诚思调研统计&#xff0c;2025年全球多轴点焊机器人市场规模约达538.2亿元。在全球工业自动化浪潮的推动下&#xff0c;预计未来该市场将持续平稳增长&#xff0c;到2032年市场规模将接近1154.9亿元&#xff0c;未来六年复合年均增长率&#xff08;CAGR&#xff09;为11.…...

MedGemma-X性能优化:基于CUDA的医疗影像加速处理

MedGemma-X性能优化&#xff1a;基于CUDA的医疗影像加速处理 1. 当医生等结果的时间&#xff0c;能不能再短一点&#xff1f; 上周陪家人做肺部CT复查&#xff0c;从扫描结束到拿到报告&#xff0c;中间隔了近40分钟。放射科医生说&#xff0c;现在AI辅助系统已经能帮着初筛&…...

SEO_从基础到进阶的SEO完整优化方案介绍

SEO基础&#xff1a;理解SEO的核心概念和基本原则 在当今互联网时代&#xff0c;SEO&#xff08;搜索引擎优化&#xff09;是每个网站拥有良好流量和高曝光度的关键。本文将从基础到进阶&#xff0c;为你介绍一个完整的SEO优化方案。我们将一步步深入了解SEO的核心概念和基本原…...

基于Docker的CosyVoice AI开发环境搭建与优化实践

最近在折腾CosyVoice这个语音模型&#xff0c;发现环境配置真是让人头疼。各种Python版本、CUDA驱动、音频库依赖&#xff0c;稍有不慎就报错。特别是团队协作时&#xff0c;每个人的本地环境差异导致“在我机器上能跑”的经典问题频繁出现。经过一番摸索&#xff0c;我最终用D…...

COMSOL中BIC多极解分(多极展开)复现:周期性结构通用解法探索

COMSOL中BIC的多极解分&#xff08;多极展开&#xff09;复现&#xff1a; 周期性结构通用&#xff0c;公式内嵌的comsol中&#xff0c;直接不需要matlab即可得到对应极子和三个方向的散射截面。 下图是以四聚体周期性结构为例&#xff0c;仿真复现结果和文献相吻合。 内含透射…...

ESP8266点阵时钟设计与实现

基于ESP8266的低成本多功能点阵时钟设计 1. 项目概述 1.1 系统架构 本项目实现了一个基于ESP8266的多功能点阵时钟系统&#xff0c;核心功能包括&#xff1a; 高精度时间显示&#xff08;支持NTP校时&#xff09; 日期/温度显示 网络数据获取&#xff08;B站粉丝数&#x…...

为什么AI时代需要Lightpanda这样的无头浏览器?揭秘9倍内存效率背后的技术革命

为什么AI时代需要Lightpanda这样的无头浏览器&#xff1f;揭秘9倍内存效率背后的技术革命 【免费下载链接】browser The open-source browser made for headless usage 项目地址: https://gitcode.com/GitHub_Trending/browser32/browser 在当今AI代理、自动化测试和大规…...

Blender置换贴图终极指南:5步让3D模型瞬间拥有真实细节

Blender置换贴图终极指南&#xff1a;5步让3D模型瞬间拥有真实细节 【免费下载链接】awesome-blender &#x1fa90; A curated list of awesome Blender addons, tools, tutorials; and 3D resources for everyone. 项目地址: https://gitcode.com/GitHub_Trending/aw/aweso…...