Ash*_*pta 5 splunk splunk-query
在 Splunk 中,我尝试提取 JSON 结构的“标签”元素内的键值对,以便每个键值对成为一个单独的列,以便我可以搜索它们。例如 :
| spath data | rename data.tags.EmailAddress AS Email
Run Code Online (Sandbox Code Playgroud)
但这并没有帮助,电子邮件字段为空。我正在尝试对所有标签执行此操作。有什么想法/指示吗?
{
"timestamp": "2021-10-26T18:23:05.180707Z",
"data": {
"tags": [
{
"key": "Email",
"value": "john.doe@example.com"
},
{
"key": "ProjectCode",
"value": "ABCD"
},
{
"key": "Owner",
"value": "John Doe"
}
]
},
"field1": "random1",
"field2": "random2"
}
Run Code Online (Sandbox Code Playgroud)
Jer*_*iah 11
我认为做你想要的:
| spath data.tags{}
| mvexpand data.tags{}
| spath input=data.tags{}
| table key value
| transpose header_field=key
| fields - column
Run Code Online (Sandbox Code Playgroud)
怎么运行的:
| spath data.tags{}获取 json 并创建一个多值字段,其中包含标签数组中的每个项目
| mvexpand data.tags{}将多值字段拆分为单独的事件 - 每个事件都包含标签数组中的一项
| spath input=data.tags{}获取每个事件中的 json 并为该项目中的每个 KVP 创建一个字段(key在value本例中)
| table key value限制对这两个字段的进一步命令
| transpose header_field=key为字段的每个值创建一个字段key(包括名为 的字段column)`
| fields - columncolumn从输出中删除该字段
这是一个完全可运行的示例:
| makeresults
| eval _raw="
{
\"timestamp\": \"2021-10-26T18:23:05.180707Z\",
\"data\": {
\"tags\": [
{\"key\": \"Email\", \"value\": \"john.doe@example.com\"},
{\"key\": \"ProjectCode\", \"value\": \"ABCD\"},
{\"key\": \"Owner\", \"value\": \"John Doe\"}
]
},
\"field1\": \"random1\",
\"field2\": \"random2\"
}
"
| spath data.tags{}
| mvexpand data.tags{}
| spath input=data.tags{}
| table key value
| transpose header_field=key
Run Code Online (Sandbox Code Playgroud)
它创建以下输出:
+----------------------+-------------+----------+
| Email | ProjectCode | Owner |
+----------------------+-------------+----------+
| john.doe@example.com | ABCD | John Doe |
+----------------------+-------------+----------+
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14838 次 |
| 最近记录: |