如何根据Kibana4中的字符串前缀聚合术语?

时间:2015-05-22 13:17:19

标签: elasticsearch logstash kibana-4

流入我们的Kibana实例的一个字段包含Python应用程序的记录器名称。这些名称代表应用程序结构,以点分隔。例如,我们可以使用以下记录器:

a
a.b
a.b.c
a.d
b.c

我想在Kibana4中使用顶级记录器(ab)设置一个2级饼图,在本例中为内切片,第二级记录器({ {1}},a.ba.d)作为外部“甜甜圈”。

“展开”饼图和ASCII格式化预期结果将如下所示:

b.c

在Kibana3中,记录器名称实际上被拆分为单独的令牌,因此我可以使用令牌==============++++ <-- representing the main aggregation (inner slices) ----oooooooooo**** <-- representing the sub-aggregation (outer donut) With: =: a +: b -: a.b o: a.d *: b.c abc。 Kibana4似乎没有分裂它们。

我尝试将自定义索引映射设置d附加到"index",但仍然保留了字段“unsplit”。经过额外的考虑,这对我来说无法获得我想要的输出。

相反,获取传入消息可能会有所帮助,并在索引中存储两个附加字段,表示顶级和二级记录器名称。因此,"analyzed"的传入值将存储为"a.b.c"(根记录器),"a"(第一级记录器)和"a.b"(未修改的值)在索引中。

这样我就可以使用根级记录器作为主聚合来设置饼图,将第一级记录器设置为子聚合。

这有可能吗?

1 个答案:

答案 0 :(得分:0)

只要您拥有固定数量的级别,您就可以简单地定义3个模式。

FirstLevel:%{DATA:firstLevel}。 FirstAndSecondLevel:%{GREEDYDATA:firstAndSecondLevel}。 FullPath:%{GREEDYDATA:fullPath}

然后您可以使用他的grok过滤器在您的消息上应用所有三种模式。您可以使用其中一个模式执行3个单独的grok过滤器,也可以将所有三个模式放在一个grok过滤器中,并将break_on_match设置为false。

然后,您应该能够在kibana中对这些字段进行分组。