2015-08-23 47 views
2

我從解析字符串的某些字段: 字符串例如:Logstash創建嵌套場

"testmessage 10.5 100"

match => { "message" => "%{GREEDYDATA:text} %{NUMBER:duraton} %{NUMBER:code)" 

輸出將是

{ 
     "text": "testmessage", 
     "duraton": "10.5", 
     "code": "100" 
    } 

但我想是這樣的:

{ 
     "text": "testmessage", 
     "values": { 
      "duraton": "10.5", 
      "code": "100" 
     } 
    } 

如何創建包含嵌套字段的字段「值」?

回答

0

正確方法:

%{GREEDYDATA:text} %{NUMBER:[values]duraton:float} %{NUMBER:[values]code:int)

1

的語法是:

%{NUMBER:[values][duraton]} 

請注意,您也可以投他們logstash:

%{NUMBER:[values][duraton]:float} 

( 「INT」 也適用)。

+0

I'T不起作用。我在http://grokdebug.herokuapp.com/上測試了這個。我得到:10.5 100 =>%{NUMBER:[values] [duraton]}%{NUMBER:[values] [code]} => {values} [duraton]「:[ 」10.5「 ], 「[值] [代碼]」:[ 「100」 ] }' – logger

+0

我相信無論是兩大神交調試器都支持此語法,但logstash當然不會。嘗試一下你自己的簡單配置。 –

+0

使用logstash 1.5.4當使用嵌套字段語法時,我得到'Grok正則表達式拋出異常{:exception =>「string not matched」,:level =>:warn}'。 '--configtest'通過。如果我從'%{NUMBER:[foo] [bar]}'更改爲'%{NUMBER:foo_bar}',它工作正常,所以我知道我的其他表達式沒有任何問題。 –