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

ES-聚合分析

ES的聚合分析

什么是ES的聚合分析

  • ElasticSearch除搜索意外,提供的针对ES数据进行统计分析的功能
  • 通过聚合,我们会得到一个数据的概览,是分析和总结全套的数据,而不是寻找单独的文档
  • 高性能,只要一条语句就可以得到分析结果

聚合分类

Bucket Aggregation 一些满足特定条件的文档的集合

  • Terms Aggregation:这种分桶策略是按照词条(term)来分桶,类似于SQL中的group by语法。如果是text类型,则按照分词后的结果分桶。例如,可以按照省份或用户名等字段进行分桶。
GET xby_index_users/_search
{"size": 0,"aggs": {"birth_place_bucket": {"terms": {"field": "birth_place"}}}
}
  • Range Aggregation:通过指定数值的范围来设定分桶规则。可以定义多个范围,文档会根据这些范围被分配到不同的桶中。
GET xby_index_users/_search
{"size": 0,"aggs": {"age_bucket": {"range": {"field": "age","ranges": [{ "from": 0, "to": 30 },{ "from": 30, "to": 60 },{ "from": 60, "to": 90 }]}}}
}
  • Histogram Aggregation:直方图分桶,以固定间隔的策略来分割数据。可以指定间隔大小(interval)和数据范围(extended_bounds)。
GET xby_index_users/_search
{"size": 0,"aggs": {"age_bucket": {"histogram": {"field": "age","interval": 30}}}
}
  • Date Histogram Aggregation:日期直方图分桶,根据日期阶梯分组,例如给定阶梯为周,会自动每周分为一组。
GET xby_index_users/_search
{"size": 0,"aggs": {"birthday_bucket": {"date_histogram": {"field": "birthday","calendar_interval": "year"}}}
}

Metric Aggregation 一些数学运算,可以对文档字段进行统计分析

  • 仅输出一个值的运算
    min/max/sum/avg/cardinality
GET xby_index_users/_search
{"size": 0,"aggs": {"age_avg": {"avg": {"field": "age"}},"age_max": {"max": {"field": "age"}},"age_min": {"min": {"field": "age"}},"age_sum": {"sum": {"field": "age"}},"age_cardinality": {"cardinality": {"field": "age"}}}
}
  • 输出多个值的运算
    stats/percenties/percentile_ranks
GET xby_index_users/_search
{"size": 0,"aggs": {"age_stats": {"stats": {"field": "age"}},"age_percentiles": {"percentiles": {"field": "age"}}}
}

Pipeline Aggregation 对其他运算结果的二次运算

GET xby_index_users/_search
{"size": 0,"aggs": {"sales_per_month": {"date_histogram": {"field": "date","interval": "month"},"aggs": {"sales": {"sum": {"field": "price"}}}},"avg_monthly_sales": {"avg_bucket": {"buckets_path": "sales_per_month>sales"}}}
}
http://www.lryc.cn/news/511475.html

相关文章:

  • 【CSS in Depth 2 精译_093】16.2:CSS 变换在动效中的应用(上)—— 图标的放大和过渡效果的设置
  • Linux Debian安装ClamAV和命令行扫描病毒方法,以及用Linux Shell编写了一个批量扫描病毒的脚本
  • Spring创建异步线程,使用@Async注解时不指定value可以吗?
  • 二分和离散化
  • 深度学习实战102-基于深度学习的网络入侵检测系统,利用各种AI模型和pytorch框架实现网络入侵检测
  • vue3使用element-plus,解决 el-table 多选框,选中后翻页再回来选中失效问题
  • 网络的类型
  • 实现类似gpt 打字效果
  • 项目需求分析流程
  • idea连接SQL Server数据库_idea连接sqlserver数据库
  • Scala_【2】变量和数据类型
  • u3d中JSON数据处理
  • idea 安装插件(在线安装、离线安装)
  • springboot maven 构建 建议使用 --release 21 而不是 -source 21 -target 21,因为它会自动设置系统模块的位置
  • 离散数学 复习 详细(子群,元素的周期,循环群,合同)
  • Java后端常见问题 (一)jar:unknown was not found in alimaven
  • overleaf中文生僻字显示不正确,显示双线F
  • C语言中的贪心算法
  • 虚幻引擎结构之UWorld
  • 太通透了,Android 流程分析 蓝牙enable流程(stack/hidl)
  • 2.微服务灰度发布落地实践(agent实现)
  • 搭建医疗客服知识库:智慧医疗的基石
  • CES Asia 2025的低空经济展区有哪些亮点?
  • Java/Spring项目包名为何以“com”开头?
  • 影刀进阶应用 | 知乎发布想法
  • v-if 和 v-for 优先级
  • 【数据结构与算法】单向链表
  • 网络编程UDP—socket实现(C++)
  • 系统思考—冰山模型
  • MySQL 中存储金额数据一般使用什么数据类型