在 Kibana 中绘制多个字段
Chart multipile fields in Kibana
我正在尝试在 Kibana (V2.3.1) 中创建一个饼图,它显示来自多个字段的值。
假设我得到了代表人类的文档,其中包含以下字段:(代表手指是弯曲的还是笔直的)
人类 1:
- human.right_arm.thumb = 弯曲
- human.right_arm.pinky = 直
- human.left_arm.thumb = 直
- human.left_arm.pinky = 半弯
人类 2:
- human.right_arm.thumb = 直
- human.right_arm.pinky = 弯曲
- human.left_arm.thumb = 半弯
- human.left_arm.pinky = 半弯
现在我想创建一个关于所有手指状态的饼图。它会产生如下结果:
- 弯曲 (= 2) = 25% 的馅饼覆盖率
- 直线 (= 3) = 37.5% 的馅饼覆盖率
- 半弯 (= 3) = 饼图覆盖率 37.5%
在 Kibana 中,每个图表只能拆分一个字段。那么如何合并所有手指的结果?
并且我怎样才能获得相同的状态,然后从所有的拇指中获得?
我认为脚本字段是可行的方法,但我无法弄清楚该怎么做,因为据我所知,聚合仅组合了字段的结果,而它应该代表一组字段 ("all fingers"或 "all thumbs").
我在网上搜索并发现了类似的问题,但一直没有明确的答案。
如有必要,我可以在 Logstash 中进行更改。我们使用 ruby/code 过滤器来定义这些字段。
注意:很遗憾,我无法将我们的 ELK 堆栈更新到更新的版本。
你能把手指的状态做成一个单独的聚合字段吗?然后,您将能够创建一个带有计数指标的饼图,并按术语拆分切片,然后选择带有手指状态名称的字段。
例如
否则,此脚本字段可能会起作用(未测试,因为我没有必要的设置):
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
关于第二个问题,你可以这样
但要实现这一点,您需要使手指的状态可聚合。
希望它能正常工作并且与您在 ELK 上的版本兼容(我使用的是 5.2)
我正在尝试在 Kibana (V2.3.1) 中创建一个饼图,它显示来自多个字段的值。
假设我得到了代表人类的文档,其中包含以下字段:(代表手指是弯曲的还是笔直的) 人类 1:
- human.right_arm.thumb = 弯曲
- human.right_arm.pinky = 直
- human.left_arm.thumb = 直
- human.left_arm.pinky = 半弯
人类 2:
- human.right_arm.thumb = 直
- human.right_arm.pinky = 弯曲
- human.left_arm.thumb = 半弯
- human.left_arm.pinky = 半弯
现在我想创建一个关于所有手指状态的饼图。它会产生如下结果:
- 弯曲 (= 2) = 25% 的馅饼覆盖率
- 直线 (= 3) = 37.5% 的馅饼覆盖率
- 半弯 (= 3) = 饼图覆盖率 37.5%
在 Kibana 中,每个图表只能拆分一个字段。那么如何合并所有手指的结果?
并且我怎样才能获得相同的状态,然后从所有的拇指中获得?
我认为脚本字段是可行的方法,但我无法弄清楚该怎么做,因为据我所知,聚合仅组合了字段的结果,而它应该代表一组字段 ("all fingers"或 "all thumbs").
我在网上搜索并发现了类似的问题,但一直没有明确的答案。
如有必要,我可以在 Logstash 中进行更改。我们使用 ruby/code 过滤器来定义这些字段。
注意:很遗憾,我无法将我们的 ELK 堆栈更新到更新的版本。
你能把手指的状态做成一个单独的聚合字段吗?然后,您将能够创建一个带有计数指标的饼图,并按术语拆分切片,然后选择带有手指状态名称的字段。
例如
否则,此脚本字段可能会起作用(未测试,因为我没有必要的设置):
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
关于第二个问题,你可以这样
但要实现这一点,您需要使手指的状态可聚合。
希望它能正常工作并且与您在 ELK 上的版本兼容(我使用的是 5.2)