Logstashを介してESに送信しているJSONファイルがあります。 JSONの1つのフィールド(ディープフィールド)を削除したいのですが、値がNULLの場合のみです。
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"
},
logstash.conf
ファイルの一部は次のとおりです。
if [input.radius] == "null" {
mutate {
remove_field => [ "input.radius" ]
}
}
もちろん、これはフィルターの内側にあります。
値がnullの場合、どうすればこのフィールドを削除できますか?
ネストされたフィールドは、[name.subfield]
ではなく[field][subfield]
で参照されます。これはあなたのために働くはずです:
if [input][radius] == "null" {
mutate {
remove_field => [ "[input][radius]" ]
}
}
「入力」フィールドがない場合、[input][radius]
参照は空の「入力」辞書を作成することに注意してください。これを回避するには、次のようにします。
if [input] and [input][radius] == "null" {
mutate {
remove_field => [ "[input][radius]" ]
}
}
詳細およびその他の例については、 Logstashドキュメント を参照してください。