2016-05-23 7 views
1

を持つ配列に文字列を爆発Logstash:は、これは私のパイプライン出力であるキー

"attributes" => "Width:150,200;Height:200;Size:L" 

私は、出力したいのですが:

"attributes" => [ 
    "Width" => [ 
     150, 
     200 
    ], 
    "Height" => 200, 
    "Size" => "L" 
] 

私はのmutateフィルタ

mutate { 
    split => ["attributes", ";"] 
} 
を使用してみましたが

これはデータをこのように変換します

"attributes" => [ 
    [0] "Width:150", 
    [1] "Height:200" 
    [2] "Size:L" 
] 

ログシャッシュフィルターで変換する方法はありますか?

答えて

3

あなたはkvフィルタを使用することができます

kv { 
    source => "attributes" 
    field_split => ";" 
    value_split => ":" 
    target => "attributes" 
} 

ruby { 
    # splits all fields so all fields are array 
    code => "event['attributes'].each do |cusField| event['attributes'][cusField[0]] = cusField[1].split(',') end" 
    # splits only if field contains ',' 
    # code => "event['attributes'].each do |cusField| event['attributes'][cusField[0]] = cusField[1].split(',') if cusField[1].include? ',' end" 
} 
+0

ほんのほか100,150; Height ... "コンマで値を配列することもできますか? – falnyr

+0

これはあなたが疑問に思った突然変異体と組み合わせることができます。 – alpert

+0

私は新しいフィールド名を取得します、それは "属性"でそれを保存する方法はありますか?また、どのように新しいフィールド名(私は分割する前に知っている)で突然変異をターゲットにする – falnyr

関連する問題