Logstash - 从json文件中删除深字段

Ami*_*iel 16 logstash logstash-grok logstash-configuration

我有JSON文件,我通过logstash发送给ES.我想在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"
    },
Run Code Online (Sandbox Code Playgroud)

logstash.conf文件的一部分是:

if [input.radius] == "null" {
                mutate {
                        remove_field => [ "input.radius" ]
                }
        }
Run Code Online (Sandbox Code Playgroud)

当然这是在过滤器内部.

如果值为null,如何删除此字段?

Mag*_*äck 27

嵌套字段不会引用[name.subfield]但是[field][subfield].这应该适合你:

if [input][radius] == "null" {
  mutate {
    remove_field => [ "[input][radius]" ]
  }
}
Run Code Online (Sandbox Code Playgroud)

请注意,如果没有"输入"字段,[input][radius]引用将创建一个空的"输入"字典.为了避免这种情况,你可以这样做:

if [input] and [input][radius] == "null" {
  mutate {
    remove_field => [ "[input][radius]" ]
  }
}
Run Code Online (Sandbox Code Playgroud)

有关详细信息和更多示例,请参阅Logstash文档.