使用 logstash 输入 jdbc 插件将从 Mysql 拉取到 Elasticsearch 的空值设置为默认值

Set Null values pulled from Mysql to Elasticsearch to a default value using logstash input jdbc plugin

我想用默认值获取它们的字段在MYSQL中可能是NULL。 这是我对 logstash 插件的配置。

input {
    jdbc {
        jdbc_connection_string => "jdbc:mysql://localhost:3306/elements"
        jdbc_user => "user"
        jdbc_password => "admin"
        jdbc_validate_connection => true
        jdbc_driver_library => "C:/work/Wildfly/wildfly-9.0.2.Final/modules/com/mysql/main/mysql-connector-java-5.1.36.jar"
        jdbc_driver_class => "com.mysql.jdbc.Driver"
        statement_filepath => "query.sql"
        use_column_value => true
        tracking_column => id
        #schedule => "*/3 * * * *"
        clean_run => true

    }
}

output {
    elasticsearch {
        index => "emptytest"
        document_type => "history"
        document_id => "%{id}"
        hosts => "localhost"
    }
}

我试图做一个过滤器来测试空值,但它没有检测到它们。

if [sourcecell_id] == "NULL" {

         mutate {

         }
    }

我做的最远的事情是通过 ruby 脚本删除字段,但我不想删除我想用默认值替换它,例如 0。

这是 ruby 脚本:

   filter {
     ruby {
                code => "
                        hash = event.to_hash
                        hash.each do |k,v|
                                if v == nil
                                        event.remove(k)
                                end
                        end
                "
        }

}

我发现解决方案是 ruby 脚本。希望对其他人有帮助。

filter {
     ruby {
                code => "
                        hash = event.to_hash
                        hash.each do |k,v|
                                if v == nil
                                        event[k] = 0
                                end
                        end
                "
        }

}