2015-05-21 8 views
7

Possiedo un file JSON che sto inviando a ES tramite logstash. Vorrei rimuovere 1 campo (È un campo profondo) nel JSON - SOLO se il valore è NULL.Logstash: rimuove il campo profondo dal file json

Parte del JSON è:

"input": { 
     "startDate": "2015-05-27", 
     "numberOfGuests": 1, 
     "fileName": "null", 
     "existingSessionId": "XXXXXXXXXXXXX", 
     **"radius": "null",** 
     "nextItemReference": "51", 
     "longitude": -99.12, 
     "endDate": "2015-05-29", 
     "thumbnailHeight": 200, 
     "thumbnailWidth": 300, 
     "latitude": 19.42, 
     "numOfRooms": "1" 
    }, 

parte nel file logstash.conf è:

if [input.radius] == "null" { 
       mutate { 
         remove_field => [ "input.radius" ] 
       } 
     } 

Questo è all'interno del filtro, naturalmente.

Come posso rimuovere questo campo se il valore è nullo?

risposta

14

I campi nidificati non vengono indirizzati con [name.subfield] ma [field][subfield]. Questo dovrebbe funzionare per voi:

if [input][radius] == "null" { 
    mutate { 
    remove_field => [ "[input][radius]" ] 
    } 
} 

Nota che se non c'è campo "input", il riferimento [input][radius] creerà un dizionario vuoto "input". Per evitare che si può fare questo:

if [input] and [input][radius] == "null" { 
    mutate { 
    remove_field => [ "[input][radius]" ] 
    } 
} 

Vedere la Logstash documentation per i dettagli e altri esempi.

+0

Grazie mille funziona come il fascino! –

Problemi correlati