news 2026/6/10 11:48:16

4.3 Elasticsearch-百分比、采样、移动平均、季节分解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
4.3 Elasticsearch-百分比、采样、移动平均、季节分解

4.3 Elasticsearch-百分比、采样、移动平均、季节分解

4.3.1 百分比(Percentiles)

在监控与告警场景里,平均值往往掩盖长尾延迟。Elasticsearch 通过percentiles聚合把整条延迟分布切成 100 份,常用 P50、P90、P99、P99.9 四档即可看清“最慢 1 % 请求”到底慢到什么程度。

语法要点

GETlatency-*/_search?size=0{"aggs":{"latency_percentiles":{"percentiles":{"field":"duration","percents":[50,90,99,99.9],"keyed":true,"tdigest":{"compression":200}// 精度 vs 内存权衡,默认 100}}}}
  • tdigest是 ES 7.x 默认算法,单分片误差 < 1 %,内存占用与compression成正比;
  • 若需精确值,可在索引映射里把duration设为histogramscaled_float+ignore_malformed,再用percentile_ranks反查“超过某阈值的请求占比”。

实战技巧

  1. 做 SLA 看板时,把 P99 与 P50 的差值命名为“长尾抖动”,差值突然放大即可触发告警;
  2. 对比灰度版本:用filters子聚合把流量按version字段拆成 A/B 两组,再分别算 P99,一眼看出新版本是否把尾巴拖长。

4.3.2 采样(Sampler & Diversified Sampler)

全量聚合在十亿级文档上跑 P99 会直接把 data node 打爆。ES 提供两种采样聚合,用少量数据换 95 % 的精度。

1. Sampler

"aggs":{"sample":{"sampler":{"shard_size":10000},// 每个分片最多取 1 w 条"aggs":{"significant_errors":{"significant_terms":{"field":"error.message"}}}}}
  • 先随机采样,再跑子聚合,显著降低内存;
  • 适合日志关键词突增、错误码聚类等 exploratory 场景。

2. Diversified Sampler
在采样时再加“去重”规则,保证同一用户、同一session不会被过度代表:

"diversified_sampler":{"shard_size":5000,"field":"user_id",// 每个 user_id 最多取 1 条"max_docs_per_value":1}
  • 做 A/B 实验时,用该聚合抽取“独立用户”延迟,可消除重度用户带来的偏差。

4.3.3 移动平均(Moving Average & Moving Function)

时序面板里最常见的降噪手段。ES 从 2.x 起内置moving_avg管道聚合,6.4 以后又加入更灵活的moving_fn,支持自定义脚本。

1. 简单线性平滑

"moving_avg":{"buckets_path":"avg_latency","window":10,"model":"linear","minimize":false}
  • window=10表示用前后 10 个桶做滑动窗口;
  • model可选linearewmaholt_winters,后者可叠加趋势与季节性。

2. 脚本化窗口(moving_fn)

"moving_fn":{"buckets_path":"avg_latency","window":7,"script":"MovingFunctions.unweightedAvg(values)"// 也可写标准差、中位数}
  • 支持values.length动态判断边缘桶,避免头尾缺值造成的陡降;
  • 若想写“环比上周同期”,可在脚本里用values[values.length-8]做跨周期对比。

可视化落地
Kibana Lens 里把指标拖到 Y 轴 → 添加“移动平均”层,窗口大小直接下拉选择;或者 TSVB 里用 “Series Agg → Moving Average” 并勾选 “Treat gaps as zeros”,即可在 5 秒内完成平滑曲线。


4.3.4 季节分解(Seasonal Decompose & ML Forecast)

移动平均只能降噪,无法把趋势、周期、残差拆开。ES 官方推荐两条路线:

  1. transform+pivot把数据按“周×小时” 24×7 矩阵重聚合,再手写脚本算同期平均,做减法拿到残差;
  2. 直接上 Machine Learning 模块,一条 API 完成趋势+周期+异常检测。

方案 A:纯聚合手写分解
步骤:

  1. date_histogram把 metrics 聚合成 1 h 桶;
  2. bucket_script计算“同期历史平均值”:
"seasonal_baseline":{"bucket_script":{"buckets_path":{"hist":"history_avg",// 过去 4 周同一小时平均值"real":"current_avg"},"script":"params.real - params.hist"}}
  1. 残差 > 3 σ 即认为异常。
    优点:零依赖、轻量;缺点:只能处理单周期(周),且需自己维护历史基线索引。

方案 B:ML Forecast(开箱即用)

PUT_ml/anomaly-detector/service_latency{"analysis_config":{"bucket_span":"1h","detectors":[{"function":"mean","field_name":"duration","by_field_name":"service"}],"influencers":["service","az"]},"data_description":{"time_field":"@timestamp"},"model_plot_config":{"enabled":true}}
  • 自动识别每日、每周、每月多重季节;
  • 实时输出lower,upper,prediction三列,残差超出边界即告警;
  • 支持forecast=7d一键生成未来 7 天容量预测,直接把曲线拖进 Kibana Dashboard 即可给老板汇报。

性能调优

  • bucket_span设为采集周期的整数倍,避免边界抖动;
  • 对超大数据量启用summary_count_field,把 1 min 原始点预聚合成 1 h 计数,模型训练提速 10 倍;
  • calendars排除大促、节假日,否则模型会把人为峰值当成新的季节分量。

4.3.5 小结

百分比让你看到“最慢的 1 %”;采样让你用 1 % 的算力看清趋势;移动平均帮你把锯齿变平滑;季节分解则告诉你锯齿里哪些是周期、哪些是异常。四板斧组合起来,足以把 Elasticsearch 从“搜索引擎”升级成“轻量级时序分析平台”,而无需额外引入 Spark、Flink 这类重型框架。
更多技术文章见公众号: 大城市小农民

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 11:39:16

【25年12月航拍无人机推荐清单】教父级大疆无人机选购指南!从几百的到几万谁是新的版本答案?

【25年12月航拍无人机推荐清单】教父级大疆无人机选购指南&#xff01;涵盖DJI/大疆/影翎/博坦/光隐/哈博森/科尔航/领空者等品牌消费级航拍机&#xff0c;新手必看无人机购买攻略&#xff01;序欢迎来到2025年12月航拍无人机推荐合集&#xff01;我是「ximagine」每个人想飞的…

作者头像 李华
网站建设 2026/6/8 7:51:22

Linly-Talker接入GPU加速后性能提升多少?

Linly-Talker接入GPU加速后性能提升多少&#xff1f; 在虚拟主播直播间里&#xff0c;观众提问刚落&#xff0c;数字人几乎立刻转头微笑、张嘴回应&#xff0c;语音流畅自然&#xff0c;口型严丝合缝——这种“类人”的交互体验背后&#xff0c;是一整套高并发、低延迟的AI系统…

作者头像 李华
网站建设 2026/6/1 0:13:05

8.3 需求传递艺术:如何准确向算法团队传达需求

8.3 coze 和他的变量,Function Calling,知识库,数据库,工作流 引言 在前一节中,我们深入探讨了AI Agent的概念、原理以及与AI Copilot的区别。现在,让我们通过一个具体的平台案例——Coze,来深入了解Agent系统的核心组件:变量、Function Calling、知识库、数据库和工…

作者头像 李华
网站建设 2026/6/9 13:32:56

【必收藏】2025大模型新趋势:从生成式AI迈向自主智能体时代

2025年&#xff0c;人工智能领域迎来了关键转折点&#xff0c;我们正从生成式AI迈向Agentic AI&#xff0c;从回应需求的生成式AI&#xff0c;迈向自主规划、执行任务的智能体。谷歌云《2025年AI投资回报率报告》显示&#xff0c;目前使用生成式AI的企业中已有52%在生产环境中部…

作者头像 李华
网站建设 2026/4/29 17:09:26

【Open-AutoGLM协同革命】:如何用1套标准化流程整合5支异构技术团队?

第一章&#xff1a;Open-AutoGLM协同革命的核心理念Open-AutoGLM 的诞生标志着自动化自然语言处理迈向了一个全新的协作范式。其核心理念在于构建一个开放、可扩展、去中心化的智能生成语言模型协作网络&#xff0c;使多个异构模型能够在统一协议下协同推理与训练&#xff0c;打…

作者头像 李华
网站建设 2026/6/8 18:05:24

99%工程师都忽略的提示词细节:Open-AutoGLM系统下的语义对齐陷阱

第一章&#xff1a;Open-AutoGLM系统提示词优化的底层逻辑Open-AutoGLM 作为新一代开源自动语言生成框架&#xff0c;其提示词优化机制建立在动态语义对齐与上下文感知增强的基础之上。该系统通过深度解析用户输入的意图结构&#xff0c;自动重构提示词序列以匹配预训练模型的最…

作者头像 李华