3 回答

TA貢獻1842條經驗 獲得超13個贊
有幾種方法可以做到這一點 - 這是我最常使用的一種(假設你也想要旁邊的):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*
當您提出問題時,請提供正確的信息。您在此過程中已用完日志。
添加回答
舉報