Logstash CSV过滤器 - 忽略双引号内的新行char

时间:2017-02-06 16:05:04

标签: csv filter logstash multiline

对csv使用logstash过滤器时,它会将每个新行字符视为换行符,并处理下一行中的下一个字符,即使这些字符在双引号内.CSV文件中有一些列包含双引号内的多行文本。 logstash可以以某种方式忽略双引号内的新行字符吗?我的配置如下。

input {
    s3 {

          bucket => "abcbucket"
          region => "eu-west-1"
          type => "spa"
          prefix => "input/2017/SPA"
          aws_credentials_file => "/Users/abc/project/def/config/s3-credentials.yaml"
          sincedb_path => "/dev/null"
  }
}
filter {
csv {
    columns => ["column1", "column2", "column3","column4"]
    separator => ","
    convert => { 
      "column1" => "integer" 
      "column2" => "integer"   
  }
}
}
output {
elasticsearch
    {
            hosts => ["abc.def.com:80"]
            index => "abc-%{+YYYY.MM.dd}"

    }
}

第3列大多数时候都有多行文字。真的很感谢你的帮助。

1 个答案:

答案 0 :(得分:1)

这种问题最好在源头解决。在您的配置中,您应该使用多行编解码器配置s3 {}部分。我猜测实际上继续column3的'lines'不是以引号字符开头的。如果是这种情况,那么配置多行应该非常简单,以便将不以引号开头的行视为对前一行的长。