如何在Kibana中统计代码语言出现次数及项目/仓库分布?
嘿,我来帮你一步步搞定这两个Kibana可视化需求!先看看我们要处理的仓库数据:
{ "repository" : "https://github.com/xxx", "nb_users" : 150, "project" : "projectA", "languages" : { "COBOL" : 9.54, "Batchfile" : 0.0, "CSS" : 0.03, "HTML" : 37.4, "Java" : 53.02 } } { "repository" : "https://github.com/yyy", "nb_users" : 120, "project" : "projectA", "languages" : { "Javascript" : 33.98, "Java" : 56.02 } } { "repository" : "https://github.com/zzz", "nb_users" : 10, "project" : "projectB", "languages" : { "C#" : 90, "HTML": 5, "Java" : 5 } }
1. 制作饼图统计各语言出现次数(如Java出现3次、HTML出现2次)
要统计每个语言在仓库中出现的次数,我们可以通过脚本提取有效语言并聚合统计:
- 打开Kibana,进入Visualize Library,点击「Create visualization」选择「Pie chart」。
- 选择你导入这些数据对应的索引模式。
- 在「Buckets」区域,点击「Add」→「Split slices」:
- 聚合方式(Aggregation)选择「Terms」。
- 字段(Field)选择「Script」,输入以下Painless脚本(过滤掉占比为0的语言,比如Batchfile):
def langList = []; for (Map.Entry entry : ctx._source.languages.entrySet()) { if (entry.getValue() > 0) { langList.add(entry.getKey()); } } return langList; - 到「Advanced options」里设置「Size」为10(或更大,确保覆盖所有语言)。
- 「Metrics」区域默认的「Count」就是我们需要的——统计每个语言出现的仓库次数。
- 点击「Update」,就能看到各语言出现次数的饼图了。
2. 制作直方图展示各语言在项目及仓库中的使用数量(如COBOL用于1个项目1个仓库、Java用于2个项目3个仓库)
这个需求需要同时统计每个语言关联的唯一项目数和仓库总数,步骤如下:
- 进入Visualize Library,创建新的「Histogram」(如果想要更直观的对比,也可以选「Horizontal bar」)。
- 选择对应的索引模式。
- 设置X轴的分组:
- 点击「Add」→「X-axis」,聚合方式选「Terms」,用和上面一样的脚本提取有效语言,Size设为足够大。
- 添加两个统计指标:
- 点击「Metrics」区域的「Add metric」,第一个Metric选「Unique count」,字段选「project.keyword」,重命名为「项目数量」(用来统计该语言涉及的不同项目数)。
- 再添加一个Metric,选「Count」,重命名为「仓库数量」(统计该语言出现的仓库总数)。
- 点击「Update」,图表就会展示每个语言对应的项目数和仓库数。如果用水平柱状图,两个数值并列展示会更清晰。
内容的提问来源于stack exchange,提问作者iclman
相关产品推荐
相关产品推荐

