2017-06-01 52 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不是開始每行有數目應濱海與前一行聯繫在一起

相關問題