在Logstash中提取特定键和值

时间:2017-02-25 12:53:53

标签: mysql json logstash

我使用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

谢谢

1 个答案:

答案 0 :(得分:1)

Grok可以解决这个问题。

grok {
  match => {
    "xml" => "<jid>(?<jid>[-0-9]{4,9})</jid>"
  }
}

这将创建一个等于您提供的值的jid字段。 XML中JID标记中的值可以是4到9个字符长。根据需要进行调整。