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

Kibana自定义时间范围下用@timestamp计算文档等待时长问题求助

Kibana 队列等待时长区间统计解决方案

错误原因

@timestamp 是文档入库的具体时间点,无法直接和时长单位做数值比较,你写的 @timestamp <=2(hours) 属于非法KQL语法,必须先计算统计基准时间和@timestamp的差值得到等待时长,再做区间筛选。

实现步骤

1. 生成等待时长计算字段

无需修改索引原有映射,直接用Kibana运行时字段临时生成即可:

  • 进入Discover页,点击左侧数据视图旁的编辑按钮,选择「Add runtime field」
  • 字段名填 wait_hours,类型选「Number」,脚本框输入以下Painless代码:
// 若等待时长计算基准为当前查询时间,用此脚本
long timeDiffMs = new Date().getTime() - doc['@timestamp'].value.toInstant().toEpochMilli();
return timeDiffMs / 3600000; // 换算为小时单位
  • 如果你的统计基准是文档入库当日的上午9点,替换为以下脚本:
ZonedDateTime entryTime = doc['@timestamp'].value;
ZonedDateTime baseTime = entryTime.withHour(9).withMinute(0).withSecond(0).withNano(0);
long timeDiffMs = new Date().getTime() - baseTime.toInstant().toEpochMilli();
return timeDiffMs / 3600000;
  • 点击保存即可完成字段添加

2. KQL查询对应区间文档

  • 统计等待时长小于2小时的文档:
    FieldName:somevalue and wait_hours < 2
  • 统计等待时长大于等于2小时且小于12小时的文档:
    FieldName:somevalue and wait_hours >= 2 and wait_hours < 12

3. 分区间批量统计数量

如果需要同时展示两个区间的文档数,直接用可视化分桶即可:

  • 新建柱状图/表格可视化,选择对应数据视图
  • 指标聚合选「Count」,统计文档总数
  • 桶聚合选「Range」,字段选wait_hours,添加两个区间:
    • 0~2
    • 2~12
  • 执行查询即可得到两个区间的文档数量

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 08:51:03