You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ELK Stack新手求助:Kibana实现每日计数与前一日差值计算

计算Kibana仪表盘中日度计数与前一日的差值(Delta)

嘿,作为ELK Stack新手能写出这样的聚合查询已经挺不错了!要实现每日计数和前一日的差值,咱们可以借助Elasticsearch的derivative聚合来搞定——这正是专门用来计算相邻时间桶之间数值变化的工具。下面我来帮你调整现有查询,并一步步解释怎么实现:

调整后的查询语句

我简化并优化了你的查询,核心是添加差值计算的逻辑,让结构更清晰易懂:

{
  "size": 0,
  "_source": {
    "excludes": []
  },
  "stored_fields": ["*"],
  "docvalue_fields": [
    { "field": "deploy_date_asset_tag", "format": "date_time" },
    { "field": "deploy_date_localtime", "format": "date_time" },
    { "field": "install_date", "format": "date_time" },
    { "field": "timestamp", "format": "date_time" },
    { "field": "ui_legacy_access", "format": "date_time" },
    { "field": "ui_satori_access", "format": "date_time" }
  ],
  "query": {
    "bool": {
      "must": [
        { "match_all": {} },
        { "range": { "timestamp": { "gte": 1408458089497, "lte": 1566224489497, "format": "epoch_millis" } } }
      ]
    }
  },
  "aggs": {
    "daily_installs": {
      "date_histogram": {
        "field": "install_date",
        "interval": "1d",
        "time_zone": "America/New_York",
        "min_doc_count": 1
      },
      "aggs": {
        "by_version": {
          "terms": {
            "field": "version.keyword",
            "size": 50,
            "order": { "_key": "desc" },
            "script": "( _value.indexOf('-') > 0 ? _value.substring(0, _value.indexOf('-')+2) : _value )"
          },
          "aggs": {
            "version_daily_count": { "value_count": { "field": "install_date" } },
            "day_over_day_delta": {
              "derivative": {
                "buckets_path": "version_daily_count",
                "gap_policy": "skip"
              }
            }
          }
        }
      }
    }
  }
}

关键改动说明

  • 我把聚合命名改成了更直观的daily_installs、by_version这类名称,后续维护起来更省心。
  • 用value_count直接统计每日每个版本的安装数,替代了你原来嵌套的date_histogram+sum_bucket,逻辑更简洁高效。
  • 核心新增的day_over_day_delta聚合:
    • buckets_path指定要计算差值的目标字段(这里是每日版本安装数version_daily_count)
    • gap_policy设为skip,如果某天没有数据,会跳过这个空桶,避免算出异常的差值。

在Kibana中展示差值

  1. 把调整后的查询粘贴到Kibana的Dev Tools里运行,确认能得到包含day_over_day_delta的结果。
  2. 创建可视化面板时,推荐选折线图或柱状图:
    • X轴选择daily_installs对应的日期字段
    • Y轴可以同时添加version_daily_count(每日计数)和day_over_day_delta(差值)
    • 拆分系列选择by_version的版本字段,这样就能直观看到每个版本的每日销量和日环比变化了。

如果运行查询时遇到版本字段的脚本异常,可以先单独测试脚本逻辑,确保它能正确提取你需要的版本前缀。

内容的提问来源于stack exchange,提问作者couch_potato

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:00:41