2015-07-20 74 views
0

我有一個JSON日誌文件,其中我正在作爲輸入與這個配置logstash發生變異濾波器總是stringifies散列和陣列

input { 
    file { filename } 
    codec { json_lines } 
} 

每一行是一個深度嵌套JSON。

在過濾器,

當我說

mutate { add_field => { "new_field_name" => "%{old_field_name}"} 
  • 如果old_field是嵌套散列/陣列它被轉換成一個字符串,然後加入。無論如何,我可以保留該類型而不是將其串化?

回答

2

你可能會考慮使用紅寶石濾波複製數組:

filter { 
    ruby { code => "event['newhash'] = event['myhash']" } 
} 

我不認爲這是一個清晰的解決方案。

除此之外,你真的使用帶有文件輸入的json_lines編解碼器嗎?從logstash DOC:

,如果你的源輸入是面向行的JSON,爲 例如,Redis的或文件輸入,請不要使用此編解碼器。相反,使用json編解碼器。

+1

json_lines是一個錯誤。 json是我們使用的實際代碼。 – tamizhgeek