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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 18:17:59