微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用Logstash Grok进行数据类型转换

如何解决使用Logstash Grok进行数据类型转换

你有两个问题。首先,您的grok过滤器会在csv过滤器之前列出,并且由于应用了过滤器是为了在应用grok过滤器时不会出现要转换的“基本”字段。

其次,除非您明确允许,否则grok不会覆盖现有字段。换一种说法,

grok{
    match => [
        "Basic", " %{NUMBER:Basic:float}"
    ]
}

永远是空话。指定overwrite => ["Basic"]或最好使用mutate的类型转换功能

mutate {
    convert => ["Basic", "float"]
}

解决方法

Basic是一个浮动字段。所提到的索引在elasticsearch中不存在。当使用运行配置文件时logstash -f,我没有例外。但是,elasticsearch中反映和输入的数据显示了Basicas
的映射string。我该如何纠正?以及如何针对多个字段执行此操作?

input {  
      file {
          path => "/home/sagnik/work/logstash-1.4.2/bin/promosms_dec15.csv"
          type => "promosms_dec15"
          start_position => "beginning"
          sincedb_path => "/dev/null"
      }
}
filter {
    grok{
        match => [
            "Basic"," %{NUMBER:Basic:float}"
        ]
    }

    csv {
        columns => ["Generation_Date","Basic"]
        separator => ","
    }  
    ruby {
          code => "event['Generation_Date'] = Date.parse(event['Generation_Date']);"
    }

}
output {  
    elasticsearch { 
        action => "index"
        host => "localhost"
        index => "promosms-%{+dd.MM.YYYY}"
        workers => 1
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。