如何在 Splunk 表中显示嵌套结构

问题描述 投票:0回答:1

假设我有以下类型的事件:

{"title":"title1","movieStatistics":[{"country":"US","cast":[{"name":"Actor1","age":30,"languages":["English","Spanish"]},{"name":"Actor2","age":48,"languages":["English","Polish","Spanish"]}]}]}

通过以下搜索: 索引=“索引-blabla” |表“movieStatistics{}.cast{}.languages{}”“movieStatistics{}.cast{}.age”

我得到这张表:

movieStatistics{}.cast{}.languages{} movieStatistics{}.cast{}.age
英语
西班牙语
英语
波兰语
西班牙语
30
48

这不容易利用,因为我无法真正将“年龄”和“语言”联系起来(我知道这没有意义,但这只是为了举例)。

您能否帮我找到适当的搜索,以便获得如下所示的表格:

movieStatistics{}.cast{}.languages{} movieStatistics{}.cast{}.age
英语
西班牙语
30
英语
波兰语
西班牙语
48

我尝试了

mvexpand
,但看起来它不符合我的需要。

splunk splunk-query
1个回答
0
投票

如果您使用

spath
来解析
_raw
并将所有内容分解,那么使用
mvexpand
就为时已晚了。您需要先使用
mvexpand

| spath movieStatistics{}.cast{}
| mvexpand movieStatistics{}.cast{}
| spath input=movieStatistics{}.cast{}

其作用是

spath
movieStatistics{}.cast{}
数组,然后执行
mvexpand
分隔数组的所有部分,然后
spath
不同的记录以获得每个数组元素的单独事件。

这是一个随处运行的示例:

| makeresults
| eval _raw="{\"title\":\"title1\",\"movieStatistics\":[{\"country\":\"US\",\"cast\":[{\"name\":\"Actor1\",\"age\":30,\"languages\":[\"English\",\"Spanish\"]},{\"name\":\"Actor2\",\"age\":48,\"languages\":[\"English\",\"Polish\",\"Spanish\"]}]}]}"
| spath movieStatistics{}.cast{}
| mvexpand movieStatistics{}.cast{}
| spath input=movieStatistics{}.cast{}
| fields - _raw _time
| table *
© www.soinside.com 2019 - 2024. All rights reserved.