2016-04-21 1923 views
0

我有以下的JSON INPUT:logstash解析動態JSON在輸出添加新字段

{ 
    "ts": "1459504800000", 
    "data": "30.7", 
    "sid": "1" 
} 

白衣這個過濾器:

filter { 
    mutate { 
      convert => { 
      "data" => "float" 
      "ts" => "integer" 

     } 

    } 

    date { 
     match => [ "ts", "UNIX_MS"] 
      target => "ts_date" 
    } 
} 

我得到以下結果:

{ 
      "ts" => 1459504800000, 
      "data" => 30.7, 
      "sid" => "1", 
     "@version" => "1", 
    "@timestamp" => "2016-04-21T14:29:54.241Z", 
      "type" => "redis-input", 
     "ts_date" => "2016-04-01T10:00:00.000Z" 
} 

我想在"data"和動態組成的結果中添加一個新字段輸入的10個參數值(1和30.7)。這個字段應該是類似"somestring"+"1" => 30.7

謝謝!

回答

1

這是add_field的用途。對於象這種無關的其他過濾器的任務,我會在發生變異使用它:

mutate { 
    add_field => { "something%{sid}" => "%{data}" } 
} 

的價值將是在這一點上的字符串。如果你希望它是數字的,你需要使用convert函數進行第二次mutate。

+0

謝謝@Alain。你知道我怎麼能解析「%{data}」的數據類型來浮動? – JosepB

+0

是的,「如果您希望它是數字,則需要使用convert函數進行第二次mutate。」 –

+0

類似於mutate {convert => {「something%{sid}」=>「float」}}'? – JosepB