Elasticsearch聚合----aggregations的简单使用

news2024/9/28 23:25:09

文章目录

  • Getting started
    • 1、搜索 address 中包含 mill 的所有人的年龄分布以及平均年龄,但不显示这些人的详情
    • 2、size=0不展示命中记录,只展示聚合结果
    • 3、按照年龄聚合,并且请求这些年龄段的这些人的平均薪资
    • 4、查出所有年龄分布,并且这些年龄段中性别M的平均薪资和性别F的平均薪资以及这个年龄段的总体平均薪资

官方文档

ES中的aggregations提供了数据分析能力,比如从数据中分组和提取数据的能力。最简单的聚合方法大致等于 SQL中GROU BY和SQL中的聚合函数。在 Elasticsearch 中,执行聚合返回 hits(命中结果)的同时还返回聚合结果。
测试数据(account.json)

Getting started

基本语法,使用‘aggs’属性进行标识

  • NAME:自定义当前聚合的名称
  • AGG_TYPE:指定当前聚合的类型
GET bank/_search
{
  "aggs": {
    "NAME": {
      "AGG_TYPE": {}
    }
  }
}

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

1、搜索 address 中包含 mill 的所有人的年龄分布

GET bank/_search
{
  "query": {
    "match": {
      "address": "mill"
    }
  },
  "aggs": {
    "ageAgg": {
      "terms": {
        "field": "age",
        "size": 10
      }
    }
  }
}
  • ageAgg:自定义的当前的聚合名称
  • terms:是当前聚合的类型,terms表示分布情况
    • field:表示当前聚合使用哪个字段
    • size:表示显示多少条聚合的信息

在这里插入图片描述
上图中,query的match一共命中了4条记录,其中的aggregations节点展示了当前聚合的结果 ;可以明显的看到ageAgg就是自定义的聚合名称,buckets节点统计的age的分别情况:

  • age=38的记录一共是2条
  • age=28的记录一共是1条
  • age=32的记录一共是1条

2、聚合第一步4个人的平均年龄
以上就是address 中包含 mill 的所有人的年龄分布,接下来聚合这四个人的平均年龄,同样ageAvg是给该聚合结果自定义的一个名称;avg是该聚合类型,表示聚合平均

在这里插入图片描述
下面是**搜索 address 中包含 mill 的所有人的年龄分布以及平均年龄,但不显示这些人的详情 **的完整DSL

GET bank/_search
{
  "query": {
    "match": {
      "address": "mill"
    }
  },
  "aggs": {
    "ageAgg": {
      "terms": {
        "field": "age",
        "size": 10
      }
    },
    "ageAvg":{
      "avg": {
        "field": "age"
      }
    }
  },
  "size": 0
}

2、size=0不展示命中记录,只展示聚合结果

在这里插入图片描述

3、按照年龄聚合,并且请求这些年龄段的这些人的平均薪资

# 2、按照年龄聚合,并且请求这些年龄段的这些人的平均薪资
# 2.1、求出所有的年龄分布
GET bank/_search
{
  "query": {
    "match_all": {}
  },
  "aggs": {
    "ageAgg": {
      "terms": {
        "field": "age"
      }
    }
  },
  "size": 0
}
# 2.2、最终;请求这些年龄段的这些人的平均薪资

GET bank/_search
{
  "query": {
    "match_all": {}
  },
  "aggs": {
    "ageAgg": {
      "terms": {
        "field": "age"
      },
      "aggs": {
        "ageGroupBalanceAvg": {
          "avg": {
            "field": "balance"
          }
        }
      }
    }
  },
  "size": 0
}

在这里插入图片描述

4、查出所有年龄分布,并且这些年龄段中性别M的平均薪资和性别F的平均薪资以及这个年龄段的总体平均薪资

4.1、聚合所有人的年龄分布

GET bank/_search
{
  "query": {
    "match_all": {}
  },
  "aggs": {
    "ageAgg": {
      "terms": {
        "field": "age",
        "size": 100
      }
    }
  },
  "size": 0
}

4.2、在4.1的基础上再对每组中的gender进行分布聚合

# 再所有的年龄分布基础上,再根据gender进行分布
GET bank/_search
{
  "query": {
    "match_all": {}
  },
  "aggs": {
    "ageAgg": {
      "terms": {
        "field": "age",
        "size": 100
      },
      "aggs": {
        "genderAgg": {
          "terms": {
            "field": "gender.keyword",
            "size": 10
          }
        }
      }
    }
  },
  "size": 0
}

在这里插入图片描述
4.3、最后求得每个年龄段的平均薪资

GET bank/_search
{
  "query": {
    "match_all": {}
  },
  "aggs": {
    "ageAgg": {
      "terms": {
        "field": "age",
        "size": 100
      },
      "aggs": {
        "genderAgg": {
          "terms": {
            "field": "gender.keyword",
            "size": 10
          }
        },
        "balanceAvg":{
          "avg": {
            "field": "balance"
          }
        }
      }
    }
  },
  "size": 0
}

在这里插入图片描述

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

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

相关文章

【Matlab-基于形态学的权重自适应去噪】

【Matlab-基于形态学的权重自适应去噪】 1 引言2 数学形态学原理3 权重自适应的多结构形态学去噪4 实现代码4.1 主函数代码4.2 串、并联去噪4.3 图像权值计算4.4 计算 PSNR 值 5 实验结果 参考书籍:计算机视觉与深度学习实战:以MATLAB、Python为工具, 主…

仿真软件Proteus8.10 SP3 pro一键安装、汉化教程(附proteus8.10下载链接安装视频)

本破解教程仅供个人及 proteus 8.10粉丝们交流学习之用,请勿用于商业用途, 谢谢支持。此版本为Proteus8.10 SP3 pro 这里写目录标题 安装包下载链接:视频教程 一、安装软件解压二、软件安装三、汉化 安装包下载链接: http://www.eemcu.cn/2022/05/14/pr…

【COMP305 LEC 8】

LEC 8 Comp305 Part I. Artificial Neural Networks Topic 3. Hebb’s Rules 1. Hebb’s Rules and the historical background The McColloch-Pitts neuron made a base for a machine (network of units) capable of 1. storing information and 2. producing logical…

2.2.3 三层交换机实现VLAN之间的通信

实验2.2.3 三层交换机实现VLAN之间的通信 一、任务描述二、任务分析三、具体要求四、实验拓扑五、任务实施1.划分SW2A的VLAN,并分配接口。2.划分SW3A的VLAN,配置每个VLAN接口的IP地址。3.设计计算机的网关,实现不同VLAN之间和不同网络之间的通…

零售数据分析模板分享(通用型)

零售数据来源多,数据量大,导致数据的清洗整理工作量大,由于零售的特殊性,其指标计算组合更是多变,进一步导致了零售数据分析工作量激增,往往很难及时分析数据,发现问题。那怎么办?可…

什么是大数据平台?

大数据平台是一套综合性的软件工具和技术,旨在帮助组织收集、存储、管理、分析和可视化大量复杂的数据。这些平台通常提供一系列的服务和功能,使得用户能够更容易地处理和分析大数据,从而获得有价值的洞察和知识。 以下是大数据平台通常包括的…

【力扣刷题】解码方法

【力扣刷题】解码方法😎 前言🙌91. 解码方法解题思路:解题源码分享: 运行结果截图: 总结撒花💞 😎博客昵称:博客小梦 😊最喜欢的座右铭:全神贯注的上吧&#…

RocketMQ如何保证消息被有序消费

RocketMQ如何保证消息被有序消费 消费者端如何接收有序消息 队列消费的两种模式 并发消费模式 当同一类消息被送入不同队列,且这些消息在处理上并不需要按时序消费时,可以考虑使用并发消费模式。 并发消费模式生产者会将消息轮询发送到不同的队列当…

OpenCV官方教程中文版 —— 直方图的计算,绘制与分析

OpenCV官方教程中文版 —— 直方图的计算,绘制与分析 前言一、原理1.统计直方图2. 绘制直方图3. 使用掩模 前言 • 使用 OpenCV 或 Numpy 函数计算直方图 • 使用 Opencv 或者 Matplotlib 函数绘制直方图 • 将要学习的函数有:cv2.calcHist()&#xf…

[100天算法】-不同路径(day 37)

题目描述 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?例如…

MATLAB | 两种上色方式的旭日图绘制

嘿,这次真的是好久不见了,好不容易才有点空写点文章,这段时间忙到后台回复都有点来不及看,很抱歉有一部分后台留言刚看到就已经超过时限没法回复了,不过根据大家的留言,需求主要集中在希望出一期旭日图的教…

12、Python -- if 分支 的讲解和使用

目录 程序结构顺序结构分支结构分支结构注意点不要忘记冒号 if条件的类型if条件的逻辑错误if表达式pass语句 程序流程 分支结构 分支结构的注意点 if条件的类型 if语句的逻辑错误 if表达式 程序结构 Python同样提供了现代编程语言都支持的三种流程 顺序结构 分支结构 循环结构…

CPU核检测

import psutil num_cpus psutil.cpu_count(logicalFalse) print(num_cpus) num_cpus psutil.cpu_count(logicalTrue) print(num_cpus)结果如下 可以看到这个结果是不同的

fiddler导出录制脚本并导出jmter脚本文件

1、fiddler导出录制脚本 可以通过save保存录制的脚本: 也可以选中这些链接,点击右键-->save-->select sessions -->选择要导入的文件 2、导入录制的脚本 再fiddler-->file--->load ARCHIVERS--->选择刚导出的.saz文件,正…

01-初识VUE3

01.初识VUE3 1.创建VUE3项目 1).使用 vue-cli 创建 ## 查看vue/cli版本,确保vue/cli版本在4.5.0以上 vue --version ## 安装或者升级你的vue/cli npm install -g vue/cli ## 创建 vue create vue_test ## 启动 cd vue_test npm run serve2).使用 vite 创建 ## 创…

吃豆人C语言开发—Day2 需求分析 流程图 原型图

目录 需求分析 流程图 原型图 主菜单: 设置界面: 地图选择: 游戏界面: 收集完成提示: 游戏胜利界面: 游戏失败界面 死亡提示: 这个项目是我和朋友们一起开发的,在此声明一下…

【C#】委托与事件

目录 一、委托 1.什么是委托 2.委托类型的声明与初始化 3.委托类型引用方法的调用 4.使用委托类型作为方法的参数 5.Action委托 6.Func委托 7.通用类型冒泡排序 8.多播委托 二、Lambda表达式 1.匿名方法 2.Lambda表达式表示匿名方法 三、事件 1.什么是事件 2.事件…

Django viewsets 视图集与 router 路由实现评论接口开发

正常来说遵循restful风格编写接口,定义一个类包含了 get post delete put 四种请求方式,这四种请求方式是不能重复的 例如:获取单条记录和多条记录使用的方式都是get,如果两个都要实现的话那么得定义两个类,因为在同一个类中不能有…

【vue3 】 创建项目vscode 提示无法找到模块

使用命令创建 vue3 创建新应用 npm create vuelatest会看到一些可选功能的询问? √ 请输入项目名称: … vue-project √ 是否使用 TypeScript 语法? … 否 / 是 √ 是否启用 JSX 支持? … 否 / 是 √ 是否引入 Vue Router 进行单…

useReducer的使用以及与useState、useImmerReducer的对比使用

前言 对于拥有许多状态更新逻辑的组件来说,过于分散的事件处理程序可能会影响代码的可读性。这种情况,可以将组件的所有状态更新逻辑整合到一个外部函数中,这个函数就是reducer。 使用 useReducer(reducer, initialArg, init?) 参数 redu…