3 回答
TA贡献1842条经验 获得超12个赞
有几种方法可以做到这一点 - 这是我最常使用的一种(假设你也想要旁边的):valuename
index=ndx sourcetype=srctp request.headers{}.name="x-real-ip"
| eval combined=mvzip(request.headers{}.name,request.headers{}.value,"|")
| mvexpand combined
| search combined="x-real-ip*"
这将跳过多值字段中某处没有“”的所有事件x-real-iprequest.headers{}.name
接下来,它将两个多值字段(名称和值)组合成一个mv字段,由字符分隔|
然后展开结果集,以便一次查看一行
最后,仅查找其中值为 “” 的结果x-real-ip
如果要从组合字段中提取 ,请添加以下行:value
| rex field-combined "|(?<x_real_ip>.+)"
当然,您可以对数据执行任何其他 SPL 操作
TA贡献1853条经验 获得超9个赞
我尝试@Warren的答案,但我得到以下错误:
“eval”命令中的错误:表达式格式不正确。预期)。
您需要添加重命名,因为 中的字符会导致问题。这是有效的查询:{}mvzip
index=ndx sourcetype=srctp request.headers{}.name="x-real-ip"
| rename request.headers{}.name AS headerName, request.headers{}.value AS headerValue
| eval reviewers=mvzip(headerName,headerValue ,"|")|
| mvexpand combined
| search combined="x-real-ip*"
TA贡献1877条经验 获得超6个赞
your search
| rex max_match=0 "name\":\s\"(?<fieldname>[^\"]+)"
| rex max_match=0 "value\":\s\"(?<fieldvalue>[^\"]+)"
| eval tmp=mvzip(fieldname,fieldvalue,"=")
| rename tmp as _raw
| kv
| fields - _* field*
当您提出问题时,请提供正确的信息。您在此过程中已用完日志。
添加回答
举报