2016-08-02 63 views
0

我有Logstash讀取CSV文件,其中包含字段my_id,並且是由數字組成的8位字符串。Logstash - 將字符串拆分爲2個字段

我想輸出文件有2個字段,而不是my_id。其中一個名爲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過濾器和編寫自定義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的不同+,他們已經實施的getter和setter和限制訪問的變量。

ruby { 
    code => " 
     event.set('[id_start]', event.get('[my_id]')[0..6]) 
     event.set('[id_end]', event.get('[my_id]')[6..8]) 
     " 
}