Logstash - удалить глубокое поле из файла json

У меня есть файл JSON, который я отправляю в ES через logstash. Я хотел бы удалить 1 поле (это глубокое поле) в JSON - ТОЛЬКО, если значение равно 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?


person Amit Daniel    schedule 21.05.2015    source источник


Ответы (1)


Вложенные поля обозначаются не [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.

person Magnus Bäck    schedule 21.05.2015