我使用Logastash从mysql收集数据。 Json的结果看起来:
"_source" : {
"username" : "room_test@localhost",
"timestamp" : 1481785195811703,
"peer" : "user@localhost/1596084304715518942270426",
"bare_peer" : "user@localhost",
"xml" : "<message to='room_test1481784717020@localhost' type='groupchat' from='user@localhost'><body>msg</body><jid>456-345</jid></message>",
"txt" : "msg",
"id" : 6452,
"kind" : "groupchat",
"nick" : "user",
"created_at" : "2016-12-15T06:59:55.000Z",
"@version" : "1",
"@timestamp" : "2017-02-25T12:17:52.043Z"
}
我需要从“xml”键中提取值作为单独的值。像这个“jid”:456-345
谢谢
答案 0 :(得分:1)
Grok可以解决这个问题。
grok {
match => {
"xml" => "<jid>(?<jid>[-0-9]{4,9})</jid>"
}
}
这将创建一个等于您提供的值的jid
字段。 XML中JID标记中的值可以是4到9个字符长。根据需要进行调整。