2017-05-23 5 views
1

JSON解析からタイムスタンプを設定する際に問題が発生します。私はこのLogstashフィルタを使用してJSONとしてそれを解析Logstash - JSON解析オブジェクトからタイムスタンプを設定する

[{"orderNumber":"423523-4325-3212-4235-463a72e76fe8","externalOrderNumber":"reactivate_22d6ff0d8f55eb821be14df9d35505a6","operation":{"name":"CAPTURE","amount":134,"status":"SUCCESS","createdAt":"2015-05-11T09:14:30.969Z","updatedAt":{}}}] 

grok { 
     match => { "message" => "\[%{GREEDYDATA:firstjson}\]%{SPACE} \[%{GREEDYDATA:secondjson}\}]}]"} 
     } 
     json{ 
      source => "firstjson" 
     } 
     date { 
      match => [ "operation.createdAt", "ISO8601"] 
     } 
     mutate { 
      remove_field => [ "firstjson", "secondjson" ] 
     } 
    } 

これはElasticSearch内部文書を作成

私はこの文字列を持っています。私は適切に日付フィールドとして認識されるoperation.createdAtという名前のフィールドを持っています。しかし何らかの理由で、この行は:

date { 
     match => [ "operation.createdAt", "ISO8601"] 
     } 

は@timestampフィールドを設定していません。現在の@timestampフィールドは、ドキュメント挿入の瞬間に設定されます。私は間違って何をしていますか?

答えて

0

ES Logstash Communityの素敵な人のおかげで、私は答えを見つけました。

の代わりに:

date { 
    match => [ "[operation][createdAt]", "ISO8601"] 
} 

、適切にJSON時間オブジェクトを抽出し、解析すること:

date { 
match => [ "operation.createdAt", "ISO8601"] 
} 

私はこれを使用しています。

関連する問題