2016-11-21 12 views
0

logstashを使用してCSVファイルのセットをロードしようとしています。 CSVファイルには2つのテーブルがあり、2番目のテーブルだけが対象です。最初のテーブルのエントリをスキップする方法に関する提案はありますか? (セイCSVファイルの最初の50行)は次のよう2つのテーブル構造を持つCSVのLogstash構成

私の現在のconfファイルを検索します:

input{ 
    file{ 
     path => "/home/username/pathtoData/*" 
     start_position => beginning 
    } 
} 
filter{ 
    csv{ 
     columns => ["col_name_a", "col_name_b", ...] 
     separator => "," 
    } 
} 
output{ 
    elasticsearch{ 
     hosts => ["localhost:portnum"] 
    } 
} 

答えて

0

あなたは、2つのデータセットの構造を指定していないが、あなたはにいくつかの方法を持っていると仮定しましょうそれらを離れて教えてください。たとえば、regular expression that counts the number of commasを使用できます。

5つのカンマが付いている列は、不要と思われる列があるとします。あなたは条件付きでdropフィルタにそれらの行を送ることができます:

filter { 
    if [message] =~ /^([^,]*,){5}[^,]*$/ { 
     drop {} 
    } 
} 

それとも、あなたは正確に7カンマを持たない任意の列落とすことができます:あなたはより精巧なフィルタリングが必要な場合は、使用することができ

filter { 
    if [message] !~ /^([^,]*,){7}[^,]*$/ { 
     drop {} 
    } 
} 

grokフィルタを使用して各行をより詳細に調べます。フィルタリングできる条件がある場合は、不要な行を条件としてdropを使用することができます。

+0

ありがとうございます!それがうまくいくと簡単に想像することができます.. – andwjstks

関連する問題