2015-05-21 22 views
7

Logstash aracılığıyla ES'ye gönderdiğim JSON dosyam var. Ben JSON 1 alan (Bu derin alan) kaldırmak istiyorum - SADECE değeri NULL ise. JSONLogstash - json dosyasından derin alanı kaldırın

Bölüm geçerli: logstash.conf dosyada

"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" 
    }, 

Bölüm geçerli:

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

Bu tabii filtrenin içindedir.

Değer boşsa bu alanı nasıl kaldırabilirim?

cevap

14

İç içe geçmiş alanlar, [name.subfield] ancak [field][subfield] ile ilişkilendirilmez. Bu sizin için çalışması gerekir: hayır "giriş" alanı varsa, [input][radius] başvurunun boş "girdi" sözlüğünü yaratacaktır

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

Not. Bunu yapabileceğini kaçınmak için:

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

detayları ve daha fazla örnek için Logstash documentation bakınız.

+0

Çok teşekkürler, çekicilik gibi çalışıyor! –