对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列大多数时候都有多行文字。真的很感谢你的帮助。
答案 0 :(得分:1)
这种问题最好在源头解决。在您的配置中,您应该使用多行编解码器配置s3 {}
部分。我猜测实际上继续column3的'lines'不是以引号字符开头的。如果是这种情况,那么配置多行应该非常简单,以便将不以引号开头的行视为对前一行的长。