基于月份分类在Kibana中绘制折线图的技术求助
Kibana绘制月份平均分折线图解决方法
方法一:基于现有宽表直接构建
你的数据是宽表结构(每个月份对应一个独立字段),可直接通过Kibana可视化工具生成折线图,步骤如下:
用经典折线图组件
- 打开Kibana,进入可视化库(Visualize Library),点击「创建可视化」,选择「折线图」。
- 配置X轴:
- 在「桶(Buckets)」区域,点击「添加」→ 选择「自定义标签」。
- 手动添加三个标签:
January、February、March,按月份顺序排列。
- 配置Y轴:
- 在「指标(Metrics)」区域,选择「平均值(Average)」,字段选
january_score;点击「添加指标」,依次添加february_score和march_score的平均值聚合。 - 把每个指标的名称修改为对应的月份(比如把
Average of january_score改成January),确保和X轴标签对应。
- 在「指标(Metrics)」区域,选择「平均值(Average)」,字段选
- 点击「更新」即可看到折线图,最后保存可视化即可。
用Lens可视化(更直观)
- 进入Kibana的「Lens」,新建可视化。
- 依次将
january_score、february_score、march_score拖到Y轴区域,每个字段都选择「平均值」聚合。 - X轴选择「手动输入的类别」,输入
January、February、March三个值,调整为正确的月份顺序。 - 修改每个Y轴指标的名称为对应月份,完成后即可生成折线图。
方法二:优化数据结构(推荐,扩展性更强)
当前宽表结构不利于后续添加新月份的可视化,建议将数据转换为窄表结构(每个文档对应一个用户的单月分数),示例结构如下:
{ "user": 13484, "month": "January", "score": 43.4 }, { "user": 13484, "month": "February", "score": 56.6 }, { "user": 13484, "month": "March", "score": 65.6 }
转换后,可视化步骤更简单:
- 进入可视化库,创建折线图(或Lens)。
- X轴:选择「桶」→「术语(Terms)」,字段选
month,排序设置为自定义顺序(January→February→March)。 - Y轴:选择「平均值(Average)」,字段选
score。 - 点击「更新」即可生成折线图,后续新增月份数据时,无需修改可视化配置,会自动同步显示。
快速转换数据(无需手动修改)
如果不想重新导入数据,可使用Kibana的**转换(Transform)**功能:
- 进入Kibana的「管理」→「转换」,点击「创建转换」。
- 选择你的源索引
index-v2,设置目标索引。 - 选择「枢轴转换」,将
user作为分组字段,把january_score、february_score、march_score转换为month和score的键值对结构,自动生成窄表数据。
内容的提问来源于stack exchange,提问作者Jimmy Broad
相关产品推荐
相关产品推荐

