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

ijxebb2r  于 2021-06-15  发布在  ElasticSearch
关注(0)|答案(1)|浏览(318)

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

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

我想使用顶级记录器在kibana4中设置一个2级饼图( a 以及 b )在这种情况下,作为内部片,和第二级记录器( a.b , a.d , b.c )就像外面的“甜甜圈”。
“展开”饼图并显示预期结果如下所示:

==============++++   <-- representing the main aggregation (inner slices)
----oooooooooo**** <-- representing the sub-aggregation (outer donut)

With:

    =: a
    +: b
    -: a.b
    o: a.d
    *: b.c

在kibana3中,记录器名称实际上被拆分为单独的令牌,因此我将使用令牌 a , b , c 以及 d 可用。kibana4似乎没有分裂他们。
我尝试附加一个自定义索引Map设置 "index""analyzed" ,但这仍然让这个领域“未被分割”。经过额外的思考,这并不能真正帮助我得到我想要的输出。
相反,获取传入消息并在索引中存储另外两个字段(表示顶级和二级记录器名称)可能会有所帮助。所以,传入值 "a.b.c" 将存储为 "a" (根记录器), "a.b" (一级记录器)和 "a.b.c" (未修改的值)。
这样,我就可以使用根级记录器作为主聚合,使用第一级记录器作为子聚合来设置饼图。
这有可能吗?

7nbnzgx9

7nbnzgx91#

只要你有一个固定数量的水平,你可以简单地定义3个模式,如。
一级:%{data:firstlevel}. 一级和二级:%{greedydata:firstandsecondlevel}. 完整路径:%{greedydata:fullpath}
然后可以使用grok过滤器将这三种模式应用到消息中。您可以使用其中一个模式执行3个单独的grok筛选器,也可以将所有3个模式放在一个grok筛选器中,并将break\u on\u match设置为false。
然后,您应该能够为kibana中的这些字段分组。

相关问题