当前位置: 首页 > 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张卡牌上的数字。 请帮参赛选手计…...

docker部署java项目(war包方式)

场景描述:java项目war包,在开发开电脑上使用dockerfile构建镜像,上传镜像到客户服务器中使用docker加载docker镜像,然后部署。 目录 一、本地环境安装 docker git 二、服务器环境安装 docker 三、构建docker镜像(win系统) 四、注意事项 (1)系统架构 (2)使…...

jsp 自定义taglib

一、简介 我们在javaWeb开发中&#xff0c;经常会用到jsp的taglib标签&#xff0c;有时候并不能满足我们的实际需要&#xff0c;这就需要我们自定义taglib标签&#xff0c; 二、开发步骤 1、编写control方法&#xff0c;继承BodyTagSupport 2、定义zdytaglib.tld标签文件 3、…...

从一到无穷大 #32 TimeCloth,云上的快速 Point-in-Time Recovery

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。 本作品 (李兆龙 博文, 由 李兆龙 创作)&#xff0c;由 李兆龙 确认&#xff0c;转载请注明版权。 文章目录 引言解决方案FAST FINE-GRAINED PITRLog FilterInter-Record Dependency ResolutionL…...

时间序列论文1——Forecasting at Scale

目录 0. AI总结0.1 文章概述0.2 研究背景0.3 研究思路0.4 研究结论与讨论1. Introduction2 Features of Business Time Series3 The Prophet Forecasting Model3.1 The Trend Model3.2 Seasonality3.3 Holidays and Events3.4 Model Fitting3.5 Analyst-in-the-Loop Modeling4 …...

HDFS常用命令

HDFS常用命令 1.HDFS命令介绍1.1基本语法格式1.2常用命令 1.HDFS命令介绍 HDFS 提供了一组命令行工具&#xff0c;用于管理和操作 HDFS 文件系统。 1.1基本语法格式 hdfs dfs -<命令> [选项] <参数>1.2常用命令 1.显示<path>指定的文件的详细信息。 had…...

请问如何做好软件测试工作呢?

一、明确测试目标和范围 理解测试目的&#xff1a;在开始测试之前&#xff0c;首先要明确测试的目标和范围&#xff0c;确保测试计划 与需求相匹配。这有助于测试人员聚焦在关键功能上&#xff0c;避免浪费时间和资源。制定详细的测试计划&#xff1a;根据项目需求&#xff0…...

单片机开发与Linux开发的区别

引言 单片机&#xff08;MCU&#xff09;和Linux开发是嵌入式系统领域的两大主要方向。它们在硬件平台、开发环境、应用场景和开发难度上存在显著区别。本文将系统性地比较单片机开发和Linux开发&#xff0c;探讨它们的主要区别及各自的应用场景和难度体系。 一、基本概念 1…...

【机器学习】回归类算法-相关性分析

一、前言 前面的几篇博客我们学习了分类算法&#xff0c;今天我们来了解一下回归类的算法吧。首先我们来谈谈两者有什么区别&#xff0c;首先是我们在之前的分类算法&#xff0c;这类算法可以将让我们学会如何将不同的数据划分到不同的类里面&#xff0c;输出的是一些离散的值。…...

java基础 之 集合与栈的使用(三)

文章目录 Map接口&#xff08;一&#xff09;实现类&#xff1a;HashMap特点HashMap集合的一些方法 &#xff08;二&#xff09;实现类&#xff1a; TreeMap特点【自然排序】代码【定制排序】代码TreeMap集合的一些方法 HashMap 和 TreeMap的区别 前文回顾&#xff1a; 戳这里 …...

JDK-java.nio包详解

JDK-java.nio包详解 概述 一直以来Java三件套&#xff08;集合、io、多线程&#xff09;都是最热门的Java基础技术点&#xff0c;我们要深入掌握好这三件套才能在日常开发中得心应手&#xff0c;之前有编写集合相关的文章&#xff0c;这里出一篇文章来梳理一下io相关的知识点。…...

wordpress4.9升级失败/网络营销的推广

目录一&#xff0c;后端部署1&#xff0c;项目打包1.1&#xff0c;引入插件1.2&#xff0c;maven打包1.3&#xff0c;修改项目版本号1.4&#xff0c;验证1.5&#xff0c;生成配置文件2&#xff0c;服务器环境搭建2.1&#xff0c;安装JDK1&#xff09;下载2&#xff09;tar包安装…...

深圳有做网站的公司660元/安康seo

快捷键&#xff1a;Ctrld&#xff1a;快速复制 Ctrl/&#xff1a;注释 ShiftEnter:直接跳转下一行注释&#xff1a; """多行注释多行注释多行注释"""# 单行注释# print(hello world)# print(hello world)# 这是一行。。。。代码print(hello…...

网站页面太多怎么做网站地图/企业培训内容包括哪些内容

作为警告&#xff0c;我不清楚您的代码到底是什么样子。您定义了mypy的几个不同版本&#xff0c;但我不确定要尝试继承哪个版本–您的问题缺少Foo。但是我猜您正在尝试做这样的事情&#xff1f;如果是这样&#xff0c;问题是根据基类的签名&#xff0c;这样做是合法的&#xff…...

注册网站公司/潍坊seo按天收费

MySQL占用内存太大&#xff0c;而SQLite是一款轻量级零配置数据库&#xff0c;非常适合在树莓派和其他嵌入式系统中使用。SQLite文档详细资料丰富&#xff0c;本文不会详细解释SQLite数据库操作的方方面面&#xff0c;只能结合具体场景按需说明。本文介绍的SQLite技巧也可以在其…...

哪个网站做衣服的/房地产营销策略有哪些

一、下载Oracle 11g R2版本。网址&#xff1a;https://www.oracle.com/index.html,下载需要登录oracle网站&#xff0c;没有账户就注册一个。或直接下载地址&#xff1a;http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html 点Downloads-->…...

西安专业建网站/电脑培训学校能学什么

原标题&#xff1a;盘点&#xff1a;简单好用的录音APP有哪些&#xff1f;本文为「智活范」原创作品&#xff0c;欢迎关注我们&#xff01;前段时间去跟一个采访&#xff0c;因为过程中要录音&#xff0c;遂找人介绍了一款录音APP来用。当时用下来觉得录音体验没问题&#xff0…...