如何用Elasticsearch 6、Kibana 6创建每小时平均价格时序图表?
解决Timelion显示Y=0直线问题,实现每小时平均价格时序图
我之前也碰到过类似的Timelion显示异常情况,结合你的索引结构和数据,来帮你搞定这个需求:
一、Timelion 正确表达式
你需要明确指定时间字段、聚合方式和时间范围,试试这个完整的表达式:
.es(index=myindex, type=mydoctype, timefield=Datetime, metric=avg:Price, from=-24h).format('HH').yaxis(min=0)
表达式各部分说明:
index=myindex, type=mydoctype:指定要查询的目标索引和文档类型,确保Timelion能定位到你的数据timefield=Datetime:这是关键! 你的时间字段是Datetime,而Timelion默认会用@timestamp,如果不指定这个参数,它找不到时间维度,就会返回空结果,最终显示为0值直线metric=avg:Price:设置聚合逻辑为计算Price字段的小时平均值from=-24h:限定查询过去24小时的数据集,匹配你的需求.format('HH'):把X轴的时间格式化为00-23的小时数,对应你要的0-24小时范围.yaxis(min=0):强制Y轴从0开始,避免因为部分时段无数据或聚合异常导致的直线问题
二、为什么之前显示Y=0直线?
大概率是这两个原因:
- 没有指定
timefield=Datetime,Timelion默认用@timestamp字段,但你的数据里没有这个字段,导致无法正确按时间聚合,最终返回空结果,显示为0值直线 - 没有设置正确的聚合指标,默认聚合可能是
count或者其他和价格无关的统计,自然看不到价格变化
三、替代方案:用Kibana标准折线图实现
如果Timelion用着不顺手,也可以用Kibana自带的可视化工具,步骤更直观:
- 进入Kibana的「Visualize」页面,新建一个「Line Chart」
- 选择你的
myindex索引模式 - X轴设置:选择「Date Histogram」,字段选
Datetime,间隔(Interval)设置为「Hour」 - Y轴设置:选择「Aggregation」为「Average」,字段选
Price - 在页面顶部的时间选择器中,设置为「Last 24 hours」
- 可以在「Options」里调整X轴的标签格式为
HH,Y轴设置合适的最小值(比如0) - 保存后就能看到每小时平均价格的变化曲线了
内容的提问来源于stack exchange,提问作者Markus
相关产品推荐
相关产品推荐

