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

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

文章目录

  • 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.lryc.cn/news/205238.html

相关文章:

  • GOPS·2023上海站 | 提前剧透!阿里、腾讯、字节、擎创等专家齐聚上海,共话互联网运维
  • 防关联浏览器推荐:MuLogin指纹浏览器安全登录多平台账号
  • 部署SeaTunnel单节点Standalone 模式环境
  • 二十三、设计模式之组合模式![
  • hbase和aerospike基础概念及所对应的python包API使用
  • 监测难?误差大?北斗突破铁路监测预警难题,24小时全方位守护
  • kafka入门03——简单实战
  • 工作两年,本地git分支达到了惊人的361个,该怎么快速清理呢?
  • 行业追踪,2023-10-24
  • 【成功实现】CentOS磁盘扩容
  • 为什么亚马逊卖家一定要有独立站?新手低成本快速搭建跨境电商独立站完整图文教程
  • spring Environment上下文环境参数变量
  • 【数据库】组合查询 UNION
  • Spring Boot配置 application.yml,根据application.yml选择启动配置
  • 一文了解GC垃圾回收
  • 触摸屏与施耐德PLC之间MODBUS无线通讯
  • BOA服务器(一):简介
  • 最详细STM32,cubeMX 超声波测距
  • Java实现连接SQL Server解决方案及代码
  • 如何用 JMeter 编写性能测试脚本?
  • vue3+vite在线预览pdf
  • Python深度学习实战-基于Sequential方法搭建BP神经网络实现分类任务(附源码和实现效果)
  • 【前端】Webpack5中Html和CSS的压缩打包
  • postman接收后端返回的文件流并自动下载
  • 谈谈Net-SNMP软件
  • 前端对普通数字数组排序示例
  • SQL server中:常见问题汇总(如:修改表时不允许修改表结构、将截断字符串或二进制数据等)
  • 无线通信中CSI的含义
  • 如何一键核实验证身份证的真伪?
  • 冒泡排序:了解原理与实现