ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

elastic.js聚合分析入门:5个必学的Metrics聚合快速上手

elastic.js聚合分析入门:5个必学的Metrics聚合快速上手 elastic.js聚合分析入门5个必学的Metrics聚合快速上手【免费下载链接】elastic.jsA JavaScript implementation of the elasticsearch Query DSL项目地址: https://gitcode.com/gh_mirrors/el/elastic.js如果你正在使用 Elasticsearch 做数据分析却还在用脚本一个个手动计算平均值、总和、去重数那这篇elastic.js聚合分析入门指南就是为你准备的。elastic.js 是一个用 JavaScript 实现的 elasticsearch Query DSL 库它把复杂的聚合请求封装成简单直观的链式调用让你无需手写冗长的 JSON 就能完成Metrics聚合。本文将带你认识 5 个最高频的 Metrics 聚合每个都有可复制的示例10 分钟就能上手。什么是 Metrics 聚合聚合Aggregation是 Elasticsearch 的数据分析利器。其中Metrics 聚合负责对一组文档的数值字段做统计计算比如求平均值、求和、找极值、统计个数。elastic.js 将这类聚合封装为ejs.xxxAggregation(name)对象配合.field()指定字段、.script()指定脚本最终通过ejs.Request()的.agg()方法挂载到搜索请求上。聚合对象的基类能力定义在 AggregationMixin.js而字段、脚本等通用设置集中在 MetricsAggregationMixin.js所有 Metrics 聚合都继承了这些方法。5 个必学的 Metrics 聚合1. 平均值聚合 AvgAggregation快速算均价AvgAggregation计算聚合文档中数值字段的平均值适合计算订单均价、商品平均评分等场景。使用方式非常简单client.search({ index: orders, body: ejs.Request().agg( ejs.AvgAggregation(avg_price).field(price) ) }, cb);它只返回单个数值实现源码见 AvgAggregation.js。✅ 核心方法.field()、.script()。2. 求和聚合 SumAggregation一键算总营收SumAggregation对数值字段求和是财务统计、销量汇总的常客ejs.SumAggregation(total_revenue).field(amount)源码位于 SumAggregation.js同样支持用.script()先加工字段值再求和灵活性很高。3. 极值聚合 Min 与 Max定位数据上下限MinAggregation返回最小值MaxAggregation返回最大值常用于监控告警、找出最高价/最低价。实现见 MinAggregation.js 和 MaxAggregation.jsejs.Request() .agg(ejs.MinAggregation(min_price).field(price)) .agg(ejs.MaxAggregation(max_price).field(price))两个聚合可以同时挂在同一个请求里一次查询拿到上下限。4. 统计聚合 StatsAggregation一次拿 5 个指标StatsAggregation是性价比之王一次返回min、max、sum、count、avg全部五个指标不用分别写五个聚合。源码见 StatsAggregation.jsejs.Request().agg( ejs.StatsAggregation(price_stats).field(price) )返回结果包含count、min、max、avg、sum非常适合仪表盘快速出数。如果需要方差、标准差等更多指标可以升级到 ExtendedStatsAggregation.js。5. 基数聚合 CardinalityAggregation精确去重计数CardinalityAggregation统计字段的去重数量类似 SQL 的COUNT(DISTINCT)比如统计独立访客数UV。由于采用近似算法大数据量下性能极佳还可以通过.precisionThreshold()调整精度与内存的取舍。源码见 CardinalityAggregation.jsejs.Request().agg( ejs.CardinalityAggregation(unique_users).field(user_id) )5 个聚合对比一览表聚合英文类名返回指标典型场景平均值AvgAggregationavg均价、平均分求和SumAggregationsum总营收、总量最小值MinAggregationmin最低价、告警下限最大值MaxAggregationmax最高价、峰值监控统计StatsAggregationmin/max/sum/count/avg仪表盘一键出数去重CardinalityAggregationcount(distinct)UV、独立用户数把它组合进搜索请求Metrics 聚合必须挂载在请求上才能生效ejs.Request()提供了.agg()方法别名.aggregation()见 Request.js 中 323 行附近。完整示例client.search({ index: orders, body: ejs.Request() .query(ejs.MatchQuery(status, paid)) // 先过滤 .agg(ejs.StatsAggregation(stats).field(amount)) // 再聚合 }, function (error, response) { console.log(response.aggregations); });⚠️ 注意Metrics 聚合不支持嵌套子聚合子聚合能力被移除了见 MetricsAggregationMixin.js 第 19-22 行。想做按分类再求平均这种分组统计需要搭配TermsAggregation等桶聚合把 Metrics 聚合作为子聚合传入。相关测试用例可以参考 aggregation_test.js。新手避坑 3 个小建议先过滤再聚合用query缩小数据范围聚合更快更准。字段必须是数值类型对 text 字段做求和建议先建立正确的映射。善用toJSON()调试聚合对象可以调用.toJSON()输出最终 JSON方便在 Kibana 里验证语法是否正确。掌握这 5 个Metrics聚合你的elastic.js 聚合分析之路就开了个好头。从AvgAggregation开始动手实验很快就能写出自己的数据分析看板了 【免费下载链接】elastic.jsA JavaScript implementation of the elasticsearch Query DSL项目地址: https://gitcode.com/gh_mirrors/el/elastic.js创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表