Elasticsearch 分布式搜索——聚合

1.聚合的种类

聚合常见的有三类:

  • **桶(Bucket)**聚合:用来对文档做分组

    • TermAggregation:按照文档字段值分组,例如按照品牌值分组、按照国家分组
    • Date Histogram:按照日期阶梯分组,例如一周为一组,或者一月为一组
  • **度量(Metric)**聚合:用以计算一些值,比如:最大值、最小值、平均值等

    • Avg:求平均值
    • Max:求最大值
    • Min:求最小值
    • Stats:同时求max、min、avg、sum等
  • **管道(pipeline)**聚合:其它聚合的结果为基础做聚合

**注意:**参加聚合的字段必须是keyword、日期、数值、布尔类型

2.Bucket聚合语法

语法如下:

GET /hotel/_search
{"size": 0,  // 设置size为0,结果中不包含文档,只包含聚合结果"aggs": { // 定义聚合"brandAgg": { //给聚合起个名字"terms": { // 聚合的类型,按照品牌值聚合,所以选择term"field": "brand", // 参与聚合的字段"size": 20 // 希望获取的聚合结果数量}}}
}

结果:
在这里插入图片描述

3.聚合结果排序

默认情况下,Bucket聚合会统计Bucket内的文档数量,记为_count,并且按照_count降序排序。

我们可以指定order属性,自定义聚合的排序方式:

GET /hotel/_search
{"size": 0, "aggs": {"brandAgg": {"terms": {"field": "brand","order": {"_count": "asc" // 按照_count升序排列},"size": 20}}}
}

结果:
在这里插入图片描述

4.限定聚合范围

默认情况下,Bucket聚合是对索引库的所有文档做聚合,但真实场景下,用户会输入搜索条件,因此聚合必须是对搜索结果聚合。那么聚合必须添加限定条件。

我们可以限定要聚合的文档范围,只要添加query条件即可:

GET /hotel/_search
{"query": {"range": {"price": {"lte": 200 // 只对200元以下的文档聚合}}}, "size": 0, "aggs": {"brandAgg": {"terms": {"field": "brand","size": 20}}}
}

5.Metric聚合语法

我们对酒店按照品牌分组,形成了一个个桶。现在我们需要对桶内的酒店做运算,获取每个品牌的用户评分的min、max、avg等值。

这就要用到Metric聚合了,例如stat聚合:就可以获取min、max、avg等结果。

语法如下:

GET /hotel/_search
{"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/70259.shtml

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

相关文章

用户忠诚度:小程序积分商城的用户保持方法

随着移动互联网的蓬勃发展,小程序积分商城已经成为了许多企业私域营销的热门选择。这个商城不仅可以吸引用户参与,还可以提高用户的忠诚度,进一步加深用户与品牌的互动关系。然而,要实现用户的忠诚度,需要一系列的策略…

C++的内存管理是怎样的?

目录 C的内存管理代码段数据段BSS段堆区映射区栈区 C的内存管理 在C中,虚拟内存分为代码段、数据段、BSS段、堆区、文件映射区、栈区六部分: 代码段 包括只读存储区和文本区,其中只读存储区存储字符串常量,文本区存储程序的机器代码。 数据…

生信豆芽菜-机器学习筛选特征基因

网址:http://www.sxdyc.com/mlscreenfeature 一、使用方法 1、准备数据 第一个文件:特征表达数据 第二个文件:分组信息,第一列为样本名,第二列为患者分组 第三个文件:分析基因名 2、选择机器学习的方…

【C语言】入门——结构体

目录 结构体 为什么有结构体? 1.结构体的声明 1.2结构体变量的访问和初始化 2.结构体成员的访问 结构体 struct 结构体类型 {//相关属性; }结构体变量; 结构体和数组不同,同一类型的数据的集合是数组; 结构体是多种类型的数据的集合&…

使用GPT-4生成训练数据微调GPT-3.5 RAG管道

OpenAI在2023年8月22日宣布,现在可以对GPT-3.5 Turbo进行微调了。也就是说,我们可以自定义自己的模型了。然后LlamaIndex就发布了0.8.7版本,集成了微调OpenAI gpt-3.5 turbo的功能 也就是说,我们现在可以使用GPT-4生成训练数据&a…

被百度判定为低质量网站了!如何整改?

我是卢松松,点点上面的头像,欢迎关注我哦! 先说结论:接受现实,不要幻想百度恢复了! 百度自9月初大批量删除百度资源平台权限以来,几乎90%(未经证实**,但数量确实不小)的网站都被取消了权限&am…

vue3中的reactive赋值问题

问题 当通过方法对reactive变量修改的时候,发现页面上的值没有及时更新? 解决方法 具体原因: 上面这样赋值检测不到,因为响应式的是它的属性,而不是它自身. 方法1: 单个赋值 如下: let obj reactive({name: zha…

MySql学习笔记07——存储引擎介绍

存储引擎 Mysql中特有的术语,Oracle中没有。 存储引擎就是一个表存储/组织数据的方式。不同的存储引擎,表存储数据的方式不同。 指定存储引擎 在建表的时候可以在最后小括号的")"的右边使用: ENGINE来指定存储引擎。 CHARSET来…

YOLO目标检测——火焰检测数据集+已标注xml和txt格式标签下载分享

实际项目应用:火灾预警系统、智能监控系统、工业安全管理、森林火灾监测以及城市规划和消防设计等应用场景中具有广泛的应用潜力,可以提高火灾检测的准确性和效率,保障人员和财产的安全。数据集说明:YOLO火焰目标检测数据集&#…

GuLi商城-前端基础Vue-整合ElementUI快速开发

npm安装 启动项目:npm run dev http://localhost:8082/#/hello

02-Tomcat打破双亲委派机制

Tomcat 如果使用默认的双亲委派类加载机制行不行? 我们思考一下:Tomcat是个web容器, 那么它要解决什么问题: 一个web容器可能需要部署两个应用程序,不同的应用程序可能会依赖同一个第三方类库的不同版本,…

记:一次关于paddlenlp、python、版本之间的兼容性问题

兼容版本 Python 3.10.8 absl-py1.4.0 accelerate0.19.0 addict2.4.0 aiofiles23.1.0 aiohttp3.8.3 aiosignal1.3.1 alembic1.10.4 aliyun-python-sdk-core2.13.36 aliyun-python-sdk-kms2.16.0 altair4.2.2 altgraph0.17.3 aniso86019.0.1 antlr4-python3-runtime4.9.3 anyi…

问道管理:华为产业链股再度拉升,捷荣技术6连板,华力创通3日大涨近70%

华为产业链股6日盘中再度拉升,到发稿,捷荣技能涨停斩获6连板,华映科技亦涨停收成3连板,华力创通大涨超19%,蓝箭电子涨约11%,力源信息涨超4%。 捷荣技能盘中再度涨停,近7日已累计大涨超90%。公司…

Pycharm通用设置个性化设置

Pycharm通用设置&个性化设置 通用设置取消打开Pycharm自动进入项目开启【Ctrl鼠标滑轮】放大缩小字体 个性化设置设置彩虹括号 通用设置 取消打开Pycharm自动进入项目 选择选择菜单【File】>【Settings】进入设置页面选择【Appearance & Behavior】>【System S…

Git使用经验总结3-删除远端提交记录

文章目录 1. 问题2. 解决方案3. 参考 1. 问题 如果将有问题的代码提交到代码仓库甚至已经push到远端,这个时候就得想办法把提交撤销。一种方案是使用git revert,不过会造成历史记录留存的问题,git revert实际上是将某个版本又重新提交了一遍…

c++中的对齐问题

c中的对齐问题 需要对齐的原因 尽管内存是以字节为单位,但是大部分处理器并不是按字节块来存取内存的.它一般会以双字节,四字节,8字节,16字节甚至32字节为单位来存取内存,我们将上述这些存取单位称为内存存取粒度. 现在考虑4字节存取粒度的处理器取in…

搜索二维矩阵 II

题目链接 搜索二维矩阵 II 题目描述 注意点 矩阵具有以下特性: 每行的元素从左到右升序排列。 每列的元素从上到下升序排列。 解答思路 最初想到使用深度优先遍历剪枝实现,但是运行后超出时间限制了可以直接遍历整个矩阵查找,虽然不超时…

Excel VSTO开发-目录

1 VSTO简介2 建立Excel VSTO项目3 代码调试4 其他事件5 Excel对象结构6 Range对象7 可视化界面开发8 相关控件9 使用Form窗口10 自定义任务面板11 自定义菜单项 相关代码下载: https://download.csdn.net/download/UruseiBest/88306532?spm1001.2014.3001.5503 学…

使用Java分析器优化代码性能,解决OOM问题

有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准https://blog.zysicyj.top 首发博客地址 背景 最近我一直在做性能优化,对一个单机应用做性能优化。主要是涉及到解析和导入导出相关的业务。 大致说一下这个单机应用…

关系型数据库和非关系型数据库

关系型数据库是以关系(表格)为基础的数据库,它采用了 SQL(Structured Query Language)作为数据操作语言,常见的关系型数据库包括 MySQL、Oracle、SQL Server 等。 非关系型数据库则是基于文档、键值、列族…