Kibana Timelion无数据显示求助:Discover可正常查看实时数据
我帮你梳理几个实用的排查步骤,一步步定位问题:
1. 先确认时间范围是否匹配
你在Discover里能看到数据,首先要检查Timelion的时间选择器和Discover完全一致。比如你在Discover用的是「最近15分钟」,但Timelion默认可能是「最近1小时」;或者你的数据是历史数据(比如示例里的timestamp对应2018-01-19左右),那得手动选择对应的时间范围,确保能覆盖数据的时间区间。
2. 检查o2字段的映射类型
如果Elasticsearch把o2识别成了字符串类型,avg聚合就会直接失效。你可以在Kibana的Dev Tools里运行这条命令查看字段映射:
GET bio-input/_mapping/meas-kafka_filtered
找到o2字段的type属性,如果是text或keyword,说明字段被识别为字符串,没法做数值聚合。这种情况需要重新索引数据,把o2设置成float或double类型(6.x版本不能直接修改已有字段的映射,只能新建索引迁移数据)。
3. 调整Timelion表达式测试
先试试简化表达式,确保能命中目标数据:
.es(index=bio-input, q=*:*, metric=avg:o2, timefield=@timestamp)
或者换成sum聚合先做测试,排除平均计算逻辑的问题:
.es(index=bio-input, metric=sum:o2, timefield=@timestamp)
另外要确认@timestamp字段的映射是date类型,Timelion依赖正确的时间字段解析才能生成时间序列图表。
4. 验证索引模式配置
你在Kibana的「Management -> Index Patterns」里,有没有创建bio-input的索引模式?并且把@timestamp设置为默认时间字段?如果没创建对应的索引模式,Timelion可能无法正确识别索引里的字段,导致聚合请求失败。
5. 直接在Elasticsearch测试聚合
如果上面的步骤都没问题,直接用Elasticsearch的原生查询验证聚合是否能返回结果,在Dev Tools运行:
GET bio-input/_search { "size": 0, "aggs": { "time_buckets": { "date_histogram": { "field": "@timestamp", "interval": "1m" }, "aggs": { "avg_o2": { "avg": { "field": "o2" } } } } } }
如果这个查询的aggregations模块里有数据,说明Elasticsearch本身没问题,问题出在Kibana的Timelion配置;如果没数据,那就是数据本身或者映射的问题,需要先解决这个底层问题。
一步步排查下来,应该能快速找到问题所在~
内容的提问来源于stack exchange,提问作者Taras Sheremeta

