Kibana中的图表多重字段

时间:2017-07-19 16:51:42

标签: elasticsearch charts logstash analytics kibana

我正在尝试在Kibana(V2.3.1)中创建一个饼图,它显示来自多个字段的值。

让我们说我有以下字段代表人类的文件:(表示手指是弯曲的还是笔直的) 人类1:

  • human.right_arm.thumb = bent
  • human.right_arm.pinky = straight
  • human.left_arm.thumb = straight
  • human.left_arm.pinky =半弯曲

人类2:

  • human.right_arm.thumb = straight
  • human.right_arm.pinky = bent
  • human.left_arm.thumb = half-bent
  • human.left_arm.pinky =半弯曲

现在我想创建一个关于所有手指状态的饼图。它会产生如下结果:

  • 弯曲(= 2)=馅饼的覆盖率为25%
  • 直(= 3)= 37.5%的馅饼
  • 半弯(= 3)= 37.5%的馅饼

在Kibana,每张图表只能分割一个字段。那么如何组合所有手指的结果?

并且如何从所有拇指获得相同的状态?

我认为脚本化的字段是要走的路,但我无法弄清楚如何,因为我可以看到聚合只结合字段的结果,而它应该代表一组字段("所有的手指&# 34;或者#34;所有的拇指")。

我在网上搜索并发现了类似的问题,但从来没有一个明确的答案。

如有必要,我可以在Logstash中进行更改。我们使用ruby / code过滤器来定义这些字段。

注意:遗憾的是,我无法将ELK堆栈更新为更新版本。

1 个答案:

答案 0 :(得分:1)

您可以将手指的状态设为单独的可聚合字段吗?然后,您将能够创建一个带有计数指标的饼图,并按术语拆分切片,然后选择具有手指状态名称的字段。

例如

enter image description here

否则,此脚本字段可能有效(未经测试,因为我没有必要的设置):

def fingerState = doc['whatever the field is called'].value; 
if (fingerState != null) 
{ 
    int index = fingerState.lastIndexOf('='); 
    if (index > 0) 
    { 
        return fingerState.substring(index+1); 
    } 
} 
return fingerState; //this will return the whole thing if for some reason this format isnt consistent

关于第二个问题,你可以做类似

的事情

enter image description here

但要使其工作,您需要使手指的状态可聚合。

希望这有效,并且它与您在ELK上的版本兼容(我使用5.2)