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

Elasticsearch 系列专题 - 第四篇:聚合分析

聚合(Aggregation)是 Elasticsearch 的强大功能之一,允许你对数据进行分组、统计和分析。本篇将从基础到高级逐步讲解聚合的使用,并结合实际案例展示其应用。


1. 聚合基础

1.1 什么是聚合(Aggregation)?

聚合是对文档集合的统计分析,类似于 SQL 中的 GROUP BY 和聚合函数(如 SUMAVG)。Elasticsearch 提供两类聚合:

  • Metric 聚合:计算数值统计(如平均值、总和)。
  • Bucket 聚合:将文档分组(如按字段值、范围)。
1.2 Metric 聚合(求和、平均值等)

计算单个字段的统计信息。示例:

GET /my_index/_search
{
  "aggs": {
    "by_views": {
      "sum": { "field": "views" }
    }
  }
}

返回:

{
   
  "aggregations": {
   
    "by_views": {
   
      "value": 1500
    }
  }
}

常用 Metric 聚合:

  • avg:平均值。
  • min/max:最小/最大值。
  • stats:综合统计(包括 min、max、avg 等)。
1.3 Bucket 聚合(分组、范围等)

将文档按条件分组。示例:

GET /my_index/_search
{
  "aggs": {
    "by_author": {
      "terms": { "field": "author.keyword" }
    }
  }
}

返回:

{
   
  "aggregations": {
   
    "by_author": {
   
      "buckets": [
        {
    "key": "Grok", "doc_count": 10 },
        {
    "key": "Alice", "doc_count": 5 }
      ]
    }
  }
}

常用 Bucket 聚合:

  • terms:按字段值分组。
  • range:按数值范围分组。
  • date_histogram:按时间间隔分组。

Mermaid 图示 - Bucket 聚合流程

http://www.dtcms.com/a/125824.html

相关文章:

  • LangGraph 使用指南
  • jwt.io学习
  • 如何在gitee/github上面搭建obsidian的图床
  • minio改成https+域名访问
  • 基于Python电影数据的实时分析可视化系统(源码+lw+部署文档+讲解),源码可白嫖!
  • STM32单片机入门学习——第33节: [10-3] 软件I2C读写MPU6050
  • SSRF漏洞公开报告分析
  • 深度解析SOCKS5代理节点:原理、搭建与安全实践
  • vue自定义颜色选择器
  • 接口请求控制工具
  • Modules模块NamespaceManagement命名空间管理
  • AI应用企业研发方案
  • 旋转位置编码
  • OpenHarmony-5.0.0-Risc-V架构搭建DeepSeek-R1
  • SS Block
  • Android Coil 3默认P3色域图加载/显示不出来
  • STM32 模块化开发指南 · 第 5 篇 STM32 项目中断处理机制最佳实践:ISR、回调与事件通知
  • Windows 录音格式为什么是 M4A?M4A 怎样转为 MP3 格式
  • 面向对象的需求分析与UML构造块详解
  • 设计模式:里氏代换原则 - 继承设计的稳定之道
  • 搜索插入位置 -- 二分查找
  • 每日一题(小白)暴力娱乐篇29
  • 新能源车「大三电」与「小三电」
  • GitLab之搭建(Building GitLab)
  • 【数据结构】堆排序详细图解
  • Python实现浏览器模拟访问及页面解析的全面指南
  • 智能自动化管理系统
  • 3.0/Q2,Charls最新文章解读
  • 自动化测试常用函数
  • django数据迁移操作受阻