logstash如何使用普通格式化程序正确处理nil值

logstash如何使用普通格式化程序正确处理nil值,logstash,Logstash,我正在使用logstash将数据从mysql读取到kafka。为了节省磁盘空间,我将输出配置写为: kafka { codec => plain { format => "%{key1},%{key2},%{key3}" } } 如我所料,通过提供此类输入数据: { key1: value1, key2: nil, key3: value3 } 输出应如下所示: value1,,value3 但实际产出是这样的: valu

我正在使用logstash将数据从mysql读取到kafka。为了节省磁盘空间,我将输出配置写为:

kafka {
    codec => plain {
        format => "%{key1},%{key2},%{key3}"
    }
}
如我所料,通过提供此类输入数据:

{
    key1: value1,
    key2: nil,
    key3: value3
}
输出应如下所示:

value1,,value3
但实际产出是这样的:

value1,%{key2},value3
如何设置输出配置以将nil转换为“”,谁都知道?

在过滤器中,添加:

if [key2] { } else {
    mutate {
        remove_field => ["key2"]
    }
    mutate {
        add_field => ["key2", ""]
    }
}

如果字段
key2
丢失或为空,它将被替换为空字符串作为值。

您好,谢谢,它可以工作。有一件小事使我困惑。通过使用mutate,rubydebu输出如下:{“key1”=>“value1”,“key2”=>[[0],“”],“key3”=>“value3”}。我想是这样:{“key1”=>“value1”,“key2”=>,“key3”=>“value3”}听起来像是key2被设置成了什么,add_字段把它变成了一个数组。阿兰说的是真的<如果[key2]在事件中不存在,或者[key2]在事件中存在,但为null(cf),则代码>如果[key2]为false。