2016-12-20 1 views
3

J'ai entrée logstash qui ressemble à ceciLogstash champ de fusion avec l'objet de racine

{ 
    "@timestamp": "2016-12-20T18:55:11.699Z", 
    "id": 1234, 
    "detail": { 
     "foo": 1 
     "bar": "two" 
    } 
} 

je voudrais fusionner le contenu de « détail » avec l'objet racine afin que l'événement final ressemble à ceci:

{ 
    "@timestamp": "2016-12-20T18:55:11.699Z", 
    "id": 1234, 
    "foo": 1 
    "bar": "two" 
} 

Existe-t-il un moyen d'accomplir ceci sans écrire mon propre plugin de filtre?

Répondre

4

Vous pouvez le faire avec un filtre de rubis.

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

+1

Dans la version 5 logstash, la syntaxe a été modifiée pour que ce code '=> « event.get ('détail') chaque {|. K, v | event.set (k, v) } event.remove ('detail') "' – Chandru