2016-08-02 16 views
0

LogstashでCSVファイルを読み込みました。フィールドにはmy_idというフィールドがあり、数字で構成される8桁の文字列です。Logstash - 文字列を2つのフィールドに分割する

出力ファイルにmy_idの代わりに2つのフィールドを使用したいとします。 1つはid_startと呼ばれ、最初の6桁で、id_endは最後の2桁になります。

例:my_id:12345678はid_startなる:123456とid_end:78

私はLogstashに非常に新しいですが、私は周りに読んでいると私は私がこれを行うにはgrokフィルタを使用する必要があると思います - 最初のフィールドを作成するための私の試みは、これまで働いていない:

filter { 
    grok { 
    match => ["id_start", "(?<my_id>.{6})"] 
    } 
} 

私もそれは非常に困難なもののこの種の良い例を見つけるために探していますので、任意の助けいただければ幸いです!

答えて

1

あなたはrubyフィルタを使用してのようなカスタムルビーのコードを書くことができます。

filter { 
    ruby { 
    code => " 
     event['id_start'] = event['my_id'][0..6] 
     event['id_end'] = event['my_id'][6..8] 
     " 
    } 
} 
+0

素晴らしい、私のために働いた!ありがとう! – millerbr

0

これは、彼らがゲッターとセッターを実装して、変数へのアクセスが制限されている、Logstash 5.xの異なります+。

ruby { 
    code => " 
     event.set('[id_start]', event.get('[my_id]')[0..6]) 
     event.set('[id_end]', event.get('[my_id]')[6..8]) 
     " 
} 
関連する問題