如何将SQL返回的字段用于Logstash if语句

时间:2018-11-12 13:14:32

标签: elasticsearch logstash logstash-configuration logstash-jdbc

Sql语句

statement => "select ref_id,index_name,type,content from t_backup_es_data where backup_id >= :sql_last_value"

返回的类型列的值包含投标和报价

if[%{type}] == "quotation" {
        elasticsearch {
            hosts => "localhost:9200"
            index => "%{index_name}"
            document_type => "%{type}"
            document_id => "%{ref_id}"
            manage_template => true
            template_overwrite => true
            template => "../config/quotationMapping.json"
        }   
    }else if[%{type}] == "proposal" {
        elasticsearch {
            hosts => "localhost:9200"
            index => "%{index_name}"
            document_type => "%{type}"
            document_id => "%{ref_id}"
            manage_template => true
            template_overwrite => true
            template => "../config/proposalMapping.json"
        }
    }

此配置不起作用,您有什么建议?

1 个答案:

答案 0 :(得分:0)

假设您使用的是JDBC输入插件,则doc表示:

  

结果集中的列将转换为事件中的字段

我将从stdout输出开始,看看你有什么。 ELK堆栈过去曾使用'type'作为内部字段,因此它可能与重命名查询中的列一样简单。