elasticsearch 聚合DSL语法

1.聚合的分类

聚合可以实现对文档数据的统计、分析、运算。聚合常见的分类:
• 桶(Bucket)聚合:用来对文档进行分组,比如
TermAggregation:按照文档字段值分组;
Date HIstogram:按照日期阶梯分组,例如一周为一组,或者一月为一组;
• 度量(Metric)聚合:用以计算一些值,比如:最大值、最小值、平均值等
Avg:求平均值;
Max:求最大值;
Min:求最小值;
Stats:同时求max、min、avg、sum等
• 管道(pipeline)聚合:其它聚合的结果为基础做聚合,例如按照酒店名称进行分组(桶聚合)完成之后,计算每一组酒店价格的平均值(度量聚合)
ES官方提供了几十种聚合方式,官方地址为ES官方地址。
我们需要注意的是,参与聚合的字段不能够是分词的字段,那样是没有意义的,参与聚合的字段类型可以是keyword、数值、日期、布尔类型。

2. DSL实现的 Bucket聚合

案例,假如现在要统计所有数据中的酒店品牌有几种,此时可以按照酒店品牌进行聚合。
语法如下:

GET /hotel/_search
{"size":0,## 设置size为0,结果中不包含文档,只包含聚合结果"aggs":{ ## 定义聚合"brandAgg":{ ## 给聚合起个名字"terms":{ ## 聚合的类型,例如按照品牌值聚合,所以选择term"field":"brand",## 参与聚合的字段"size":20 ## 希望获取的聚合结果数量,假如是200种,但是我只需要显示10种,就需要指定}}}}      

默认情况下,buckt聚合会统计bucket内的文档数量,记为_count,并且按照_count降序排序,我们可以修改结果排序方式,语法如下:

GET /hotel/_search
{
"size":0,
"aggs":{ "brandAgg":{"terms":{"field":"brand",“order”:{"_count": "asc" ## 指定排序方式,按照_count升序排序}"size":20}}}
}   

上面的这种聚合方式是对整个索引库文档做聚合,对内存消耗非常大,我们可以限定要聚合的文档范围,只要添加query查询条件即可,语法如下:

 GET /hotel/_search
{
"query":{   ## 指定查询条件"range" : {"price":{"lte":200 //只对200元以下的文档聚合}}},    
"size":0,
"aggs":{ "brandAgg":{"terms":{"field":"brand",“order”:{"_count": "asc" ## 指定排序方式,按照_count升序排序}"size":20}}}
}   
3. DSL 实现Metrics聚合

例如,我们要求获取每个品牌的用户评分的min,max,avg等值。由于是对每个品牌的评分做聚合,需要先将品牌分组,将分组之后的结果进行计算,语法余下:

{"size":0,"aggs":{"brandAgg":{ "terms":{"field":"brand","size":20   },"aggs"{                    ## 是brands聚合的子聚合,也就是分组后对每组分别计算score_stats":{        ## 聚合名称"stats":{               ## 聚合类型,这里stats可以计算min、max、avg等"field":"score"     ##聚合字段,这里是score}}}}}}  

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

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

相关文章

GIS之深度学习02:Anaconda2019版本安装(py38)

Anaconda是一个专注于数据科学和机器学习的开源发行版,内置了丰富的工具和库,包括Python解释器、NumPy、SciPy、Pandas、Scikit-learn、TensorFlow等,使用户能够轻松进行科学计算和数据分析。其强大的包管理器conda简化了软件包的安装和环境管…

Flask入门一

文章目录 一、Flask介绍二、Flask创建和运行1.安装2.快速使用3.Flask小知识4.flask的运行方式 三、Werkzeug介绍四、Jinja2介绍五、Click CLI 介绍六、Flask安装介绍watchdog使用python--dotenv使用(操作环境变量) 七、虚拟环境介绍Mac/linux创建虚拟环境…

【自动化的讲解】

自动化 1. 前言2. 自动化的历史和发展3. 自动化的类型4. 自动化的优点和缺点5. 自动化的实际应用 1. 前言 自动化是指使用各种控制系统和技术,如计算机软件、机器人、人工智能和信息技术来减少人工介入,并执行各种过程和任务,自动化可以应用…

Mysql的备份还原

模拟环境准备 创建一个名为school的数据库,创建一个名为Stuent的学生信息表 mysql> create database school; Query OK, 1 row affected (0.00 sec)mysql> use school; Database changed mysql> CREATE TABLE Student (-> Sno int(10) NOT NULL COMME…

java 数据结构栈和队列

目录 栈(Stack) 栈的使用 栈的模拟实现 栈的应用场景 队列(Queue) 队列的使用 队列模拟实现 循环队列 双端队列 用队列实现栈 用栈实现队列 栈(Stack) 什么是栈? 栈 :一种特殊的线性表,其 只允许在固定的一端进行插入和删除元素操…

C 语言中的 char 关键字详解

1. char类型 char类型用于存储单个字符,占用1个字节的内存空间。在C语言中,char类型可以用于存储ASCII码表中的任意字符,包括大小写字母、数字、标点符号等。例如: char ch A;在这个例子中,变量ch存储了字符A的ASCI…

顶顶通呼叫中心中间件-如何使处于机器人话术中的通话手动转接到坐席分机上讲解(mod_cti基于FreeSWITCH)

顶顶通呼叫中心中间件使用httpapi实现电话转接操作过程讲解(mod_cti基于FreeSWITCH) 需要了解呼叫中心中间件可以点以下链接了解顶顶通小孙 1、使用httpapi接口转接 一、打开web版的ccadmin并且找到接口测试 打开web-ccadmin并且登录,登录完成之后点击运维调试-再…

服务器部署java 的docker项目,以及常用的一些命令

1.编写Dockerfile文件(javaEE) # 使用 Java 运行时环境作为基础镜像 FROM openjdk:8-jdk-alpine# 将 jar 文件添加到容器中 ADD target/SBoot-ssmp-0.0.1-SNAPSHOT.jar app.jar# 运行 jar 文件 ENTRYPOINT ["java","-jar","/a…

【ArcGIS】统计格网中不同土地利用类型占比

基于ArcGIS统计格网中不同土地利用类型占比 数据准备ArcGIS操作步骤1、创建渔网(Create Fishnet)2、建立唯一标识3、选择格网4、提取不同类别土地利用类型5、各类用地面积计算 参考另:可能出现的问题总结Q1:ArcGIS获取唯一值&…

【python、nlp、transformer】transformer与nlp感受器

Transformer的优势 相比之前占领市场的LSTM和GRU模型,Transformer有两个显著的优势: 1. Transformer能够利用分布式GPU进行并行训练,提升模型训练效率。 2. 在分析预测更长的文本时,捕捉间隔较长的语义关联效果更好&#xff0e…

ARM系列 -- 虚拟化(一)

今天来研究一个有意思的话题,虚拟化(virtualization)。 开始前,先闲扯一下,最近一个词比较火,“元宇宙(Metaverse)”。在维基百科里面是这么定义元宇宙的,“The Metaver…

2024-02-27(Kafka)

1.Kafka中所有的消息都是保存在主题中的,要生产消息到Kafka,首先必须要创建一个主题。 2.Kafka的生产者/消费者 安装kafka集群,可以测试如下: 创建一个topic主题(消息都是存放在topic中,类似mysql建表的过…

iMazing 3.0.0.3 for mac 中文破解版2024最新图文安装教程

我们刚刚发布了iMazing 3.0.0.3 for mac 中文版本。Windows和macOS用户现在都可以试驾并体验iPhone管理的未来。 备受期待的第一个Windows版本得益于过去几个月macOS测试版的所有改进,使其成为一个稳定的初始版本。 我们的开发团队创造了一种无缝的外观和体验&#…

Android日历提醒增删改查事件、添加天数不对问题

Android日历提醒是非常好的提醒功能&#xff0c;笔者在做的过程中&#xff0c;遇到的一些问题&#xff0c;现整理出来&#xff0c;以供参考。 一、申请日历的读写权限 <uses-permission android:name"android.permission.WRITE_CALENDAR" /> <uses-permiss…

Lua速成(5)table

一、table table 是 Lua 的一种数据结构用来帮助我们创建不同的数据类型&#xff0c;如&#xff1a;数组、字典等。 Lua table 使用关联型数组&#xff0c;你可以用任意类型的值来作数组的索引&#xff0c;但这个值不能是 nil。 Lua table 是不固定大小的&#xff0c;你可以…

springboot-基础-eclipse集成mybatis+使用方法+排错

备份笔记。所有代码都是2019年测试通过的&#xff0c;如有问题请自行搜索解决&#xff01; 目录 集成mybatis安装mybatis的jar包安装插件&#xff1a;mybatis-generator安装方法生成方法报错&#xff1a;java.lang.RuntimeException: Exception getting JDBC Driver mybatis注解…

数据之美:用山海鲸展现数据魅力

在数据分析领域&#xff0c;数据可视化是一个至关重要的环节。作为一名资深的数据分析师&#xff0c;我深知一个直观、易于理解的数据可视化看板对于传达信息、辅助决策的重要性。今天&#xff0c;我将以自己在用的山海鲸可视化软件为例&#xff0c;与大家分享如何制作一个高效…

LeetCode 热题 100 | 图论(上)

目录 1 200. 岛屿数量 2 994. 腐烂的橘子 2.1 智障遍历法 2.2 仿层序遍历法 菜鸟做题&#xff0c;语言是 C 1 200. 岛屿数量 解题思路&#xff1a; 遍历二维数组&#xff0c;寻找 “1”&#xff08;若找到则岛屿数量 1&#xff09;寻找与当前 “1” 直接或间接连接在…

项目登录方案选型

一.Cookie + Session 登录 大家都知道,HTTP 是一种无状态的协议。无状态是指协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。即我们给服务器发送 HTTP 请求之后,服务器根据请求返回数据,但不会记录任何信息。为了解决 HTTP 无状态的问题,出现了 Cookie。Co…

离线数仓(四)【数仓数据同步策略】

前言 今天来把数仓数据同步解决掉&#xff0c;前面我们已经把日志数据到 Kafka 的通道打通了。 1、实时数仓数据同步 关于实时数仓&#xff0c;我们的 Flink 直接去 Kafka 读取即可&#xff0c;我们在学习 Flink 的时候也知道 Flink 提供了 Kafka Source&#xff0c;所以这里不…