Elasticsearch基础_5.ES聚合功能

news2024/12/23 6:15:32

文章目录

  • 一、数据聚合
    • 1.1、桶聚合
      • 1.1.1、单维度桶聚合
      • 1.1.2、聚合结果排序
      • 1.1.3、限定聚合范围

  • 本文只记录ES聚合基本用法,后续有更复杂的需求可以查看相关书籍,如《Elasticsearch搜索引擎构建入门与实战》

一、数据聚合

聚合可以让我们极其方便的实现对数据的统计、分析、运算。

聚合常见的有三类:

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

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

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

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

1.1、桶聚合

1.1.1、单维度桶聚合

  最简单的桶聚合是单维度桶聚合,指的是按照一个维度对文档进行分组聚合。在桶聚合时,聚合的桶也需要匹配的方式,有termsfilterranges等。本节只介绍比较有代表性的terms查询和ranges查询。

GET /hotel/_search
{
  "size": 0,                   // 如果不需要返回匹配的文档信息,最好将返回的文档个数设置为0。这样既可以让结果看起来更整洁,又可以提高查询速度。
  "aggs": {                    // 定义聚合
    "brandAgg": {              // 给聚合起个名字
      "terms": {               // 聚合的类型,按照品牌值聚合,所以选择term
        "field": "brand",      // 参与聚合的字段
        "size": 20             // 希望获取的聚合结果数量
      }
    }
  }
}

在这里插入图片描述

1.1.2、聚合结果排序

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

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

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

1.1.3、限定聚合范围

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

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

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

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

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

相关文章

进程和线程之间的通用方式

进程之间的通信方式有哪些 进程间通信(Inter-Process Communication, IPC)是指不同进程之间传递信息和数据的机制。由于进程之间的内存空间是相互独立的,因此必须使用特定的通信方式来实现数据共享。 以下是常见的进程间通信方式&#xff1…

【前端开发入门】css快速入门

目录 引言一、css盒模型1. 盒模型概念2. 盒模型案例 二、css编写1. html文件内部编写1.1 标签style属性编写1.2 css选择器关联1.2.1 id选择器1.2.2 class选择器1.2.3 标签选择器1.2.4 css选择器作用域1.2.5 其他选择器1.2.6 各css选择器优先级 2. 单独维护css文件2.1 创建css文…

【韩顺平Java笔记】第6章:数组、排序和查找

文章目录 153. 回顾上节课内容154. 听懂和会做155. 数组的必要性156. 数组快速入门157. 数组使用1158. 数组使用2160. 数组使用3161. 数组注意事项161. 数组练习1162. 数组练习2163. 数组赋值机制1164. 数组赋值机制2165. 数组拷贝166. 数组翻转1168. 169. 数组扩容1,2170. 数组…

解决银河麒麟服务器操作系统中`/etc/bashrc`环境变量不生效的问题

解决银河麒麟服务器操作系统中/etc/bashrc环境变量不生效的问题 1、问题描述2、问题原因3、解决方法 💐The Begin💐点点关注,收藏不迷路💐 在银河麒麟服务器操作系统中,有时你可能会遇到在/etc/bashrc文件中配置的环境…

VMware 设置静态IP

环境 os: centos 7vmware: 16.2.0 build-18760230 设置静态IP 不知道桥接模式和nat模式抽什么疯,忽然用不了了,虚拟机开机之后,本地ssh连接不上,ping 了一下,本机ping不通虚拟机。干脆参考网上的方法,直…

【网络安全 | Java代码审计】某Blog系统

未经许可,不得转载。 文章目录 公告处XSS评论处XSS添加友链处XSS文件上传处XSS公告处XSS 编辑公告处后端代码: 跟进updateNotice()方法: 继续跟进: 公告内容直接插入数据库,看看前端从数据库获取数据时有没有对数据做处理: noticeService 是一个服务层组件,负责业务逻辑…

【Verilog学习日常】—牛客网刷题—Verilog企业真题—VL74

异步复位同步释放 描述 题目描述: 请使用异步复位同步释放来将输入数据a存储到寄存器中,并画图说明异步复位同步释放的机制原理 信号示意图: clk为时钟 rst_n为低电平复位 d信号输入 dout信号输出 波形示意图: 输入描…

在线翻译界的4大宝藏,一站式解决语言难题!

现在全球化越来越厉害,语言根本就不是啥沟通的阻碍了。不管是搞学术研究、商务交流,还是平常学习,翻译工具都成了咱少不了的帮手。今天呢,我给大家推荐四款在 2024 年特别受推崇的邮件翻译神器,像百度在线翻译啥的。这…

Suricata:开源网络分析和威胁检测

Suricata 是一款高性能、开源网络分析和威胁检测软件,被大多数私人和公共组织使用,并被主要供应商嵌入以保护他们的资产。 Suricata 功能 Suricata 提供全面的网络安全监控 (NSM) 功能,包括记录 HTTP 请求、捕获和存储 TLS 证书以及从网络流…

带你深入浅出设计模式:一、单例模式,正确理解懒汉式和饿汉式

此为设计模式第一谈! 用总-分-总的结构和生活化的例子给你讲解设计模式! 码农不易,各位学者学到东西请点赞收藏支持支持! 开始部分: 总:对于单例模式,在开发中通常用于设计配置信息类、数据库…

A/D转换器的基本概念(分辨率+转换时间+采样定律+量化误差)+A/D转换方法(Flash(同步)型A/D转换器+计数型转换器)

2024-10-02,星期三,21:41,天气:晴,心情:晴。Hello,大家好啊,真的是好久没见了,上次更新还是在九月份,九月的最后一周出了一周的差,然后继续上了两…

代码随想录训练营Day19 | 235. 二叉搜索树的最近公共祖先 | 701.二叉搜索树中的插入操作 | 450.删除二叉搜索树中的节点

Leetcode 235. 二叉搜索树的最近公共祖先 题目描述 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且…

【Nacos入门到实战三】安装Nacos Server:从零开始搭建配置中心

个人名片 🎓作者简介:java领域优质创作者 🌐个人主页:码农阿豪 📞工作室:新空间代码工作室(提供各种软件服务) 💌个人邮箱:[2435024119qq.com] &#x1f4f1…

vue3项目如何添加属于自己的 live2d 看板娘 (支持换模型)

一、效果如下,想要更加效果前往我的博客 snows_ls BLOGhttp://124.223.41.220/ 资源我放这个仓库咯, 直接拉取即可 snows_l/live2d-sourcehttps://gitee.com/snows_l/live2d-source 二、引入(看板娘出来了) 直接在vue项目html中…

查找与排序-快速排序

排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。常见的内部排序算法有:插入排序、希尔排序、选择排序…

高效论文写作指南:那些你必须知道的工具与平台

学境思源,一键生成论文初稿: AcademicIdeas - 学境思源AI论文写作 在完成论文写作过程中,有许多实用的工具和平台可以帮助提高效率、确保质量,并保持学术规范。以下是一些常用的论文写作工具和平台: 1. 文献管理工具…

数据网格:数据去中心化的特征

在现代的数据管理架构理念中,常常会谈及数据网格,将它用来解决大规模、复杂数据环境下的数据管理和利用问题。本文将探讨数据网格的概念以及数据去中心化和数据网格的紧密联系。 一数据网格 数据网格定义:数据网格将数据视为一种产品&#x…

中原台球展,2025郑州台球展会,中国台球产业链发展大会

阳春三月,万物复苏,商机无限;品牌宣传正当季,产品招商正当时,新品发布好时期。抓住台球发展的这波财富机遇,借助壹肆柒郑州台球展这个超级平台,将品牌和产品快速打造成为覆盖全国市场的顶流。20…

Acwing 简单博弈论

公平组合游戏ICG 若一个有限满足:由两名玩家交替行动: 在游戏进程的任意时刻;可以执行的合法行动与轮到哪名玩家无关;不能行动的玩家判负; 则称该游戏为一个公平组合游戏。NIM博弈属于公平组合游戏,但城建…

鸢尾花书实践和知识记录[编程1-11二维和三维可视化]

作者空间 文章目录 思维导图函数使用 二维可视化方案平面散点图散点图的示例代码1:绘制鸢尾花的散点图代码2Plotly绘制散点图 数据类型和绘图工具的对应 平面等高线代码3生成等高线网格数据 plotly.express关键的绘图函数 Plotly的另一个模块代码4 Plotly生成的 热图…