使用logstash从一个字段更改数据库的空值并插入Elasticsearch

时间:2017-08-18 06:40:52

标签: elasticsearch null logstash

我想将NULL的值替换为其他值。该字段是通过使用数据库中的Logstash JDBC插件获得的。这是我的配置文件。

input {
jdbc {
jdbc_connection_string => "url"
jdbc_user => "user"
jdbc_password => "pswd"
jdbc_driver_library => "./ifxjdbc-3-50-JC7.jar"
jdbc_driver_class => "com.informix.jdbc.IfxDriver"
statement =>  ["SELECT st1.name as s_name, st1.typ, st2.name as comp_name, zen.s_id, zen.comp_id, zen.conc_1, zen.conc_2 FROM sub_zen zen join sub st1 on st1.id = zen.s_id join sub st2 on st2.id = zen.comp_id"]}}

我想在这里做的是将零值(默认情况下,典型值为nil)替换为P.我到目前为止尝试了这个。

filter{
mutate {

gsub => [

  "typ", "nil", "P"

]

}
}

不起作用。

我也试过这个,但它会抛出错误

filter{
ruby {

code => "

if event.get('typ') == nil

event.set('typ') == P

end
"

}
}

有人可以帮忙吗?我怎么解决这个问题。

1 个答案:

答案 0 :(得分:0)

如果该字段为null / nil,则可能是JDBC输入不是在您的事件中放置该字段。在这种情况下(或者即使它仍然可以尝试以下)你可以尝试这样的事情:

if !("" in [typ]) {
    mutate {
        add_field => { typ => "P" }
    }
}

请参阅:logstash check if field exists