2016-12-19 2 views
1

Ich benutze ein Logstash Plugin (logstash-input-rethinkdb). Dieses Plugin packt alle Änderungen in der Datenbank und gibt ein JSON-Objekt die folgende Struktur:Logstash mutate füge alle Felder von json hinzu

{ 
     "db":"itjobs", 
     "table":"countries", 
     "old_val":null, 
     "new_val":{ 
      "code":"USA3", 
      "country":"USA3", 
      "id":"7c8c9e4e-aa37-48f1-82a5d624cde4a3a0" 
     }, 
     "@version":"1", 
     "@timestamp":"2016-12-19T19:54:08.263Z" 
} 

ich fügen Sie diesen doc in Elasticsearch.
Aber das Problem ist, dass in elastischen i mit der gleichen Struktur erhalten ->new_val:{code:''}

Ich brauche einen Filter oder etwas zu tun, das alles von new_val und fügen Sie ihn in die Wurzel

ich die Filter extrahieren wird versucht, json aber das bekommen ein string und das Plugin bereits gibt json

nach bearbeiten ich brauche es aussehen:

{ 
     "db":"itjobs", 
     "table":"countries", 
     "code":"USA3", 
     "country":"USA3", 
     "id":"7c8c9e4e-aa37-48f1-82a5d624cde4a3a0" 
     "@version":"1", 
     "@timestamp":"2016-12-19T19:54:08.263Z" 
} 

Antwort

1

Sie können den Rubin-Filter verwenden:

filter { 
    ruby { 
     code => " 
      event['new_val'].each {|k, v| 
       event[k] = v 
      } 
      event.remove('new_val') 
     " 
    } 
} 

mit Logstash Geprüft 2.2, sollte es für die Version unterschiedlich sein 5+.

+0

Danke, das habe ich auch ein bisschen anders gemacht. – Razvan

Verwandte Themen