web-dev-qa-db-ja.com

Logstash-jsonファイルからディープフィールドを削除します

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の場合、どうすればこのフィールドを削除できますか?

16
Amit Daniel

ネストされたフィールドは、[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ドキュメント を参照してください。

27
Magnus Bäck