2017-06-01 31 views
0

我有一个csv,其中一列可能包含多行值。使用logstash在ElasticSearch中加载csv

ID,Name,Address 
1, ABC, "Line 1 
Line 2 
Line 3" 

根据CSV标准写在上面的数据是一个记录(据我所知)。

我有以下过滤器logstash

filter { 
    csv { 
     separator => "," 
     quote_char => "\"" 
    columns => ["ID","Name", "Address"] 
    } 
} 
output { 
    elasticsearch { 
    host => "localhost" 
    port => "9200" 
    index => "TestData" 
    protocol => "http" 
    } 
stdout {} 
} 

但是,当我执行它,它创建三个记录。 (原则上都是错误的,因为第一个包含地址的两个列数据ID和名称以及部分数据,接下来的两个记录包含第二行和第三行,但没有ID和名称

我该如何解决这个问题? ?在文件解析

回答

0

你tryed的multiline codec

您应该添加这样的事情在你的输入插件:

codec => multiline { 
     pattern => "^[0-9]" 
     negate => "true" 
     what => "previous" 
    } 

它告诉logstash不是开始每行有数目应滨海与前一行联系在一起

相关问题