J'ai un problème avec la définition d'un horodatage à partir d'une analyse JSON.Logstash - Définition d'un horodatage à partir d'un objet analysé JSON
J'ai cette chaîne:
[{"orderNumber":"423523-4325-3212-4235-463a72e76fe8","externalOrderNumber":"reactivate_22d6ff0d8f55eb821be14df9d35505a6","operation":{"name":"CAPTURE","amount":134,"status":"SUCCESS","createdAt":"2015-05-11T09:14:30.969Z","updatedAt":{}}}]
Je parse comme un JSON en utilisant ce filtre Logstash:
grok {
match => { "message" => "\[%{GREEDYDATA:firstjson}\]%{SPACE} \[%{GREEDYDATA:secondjson}\}]}]"}
}
json{
source => "firstjson"
}
date {
match => [ "operation.createdAt", "ISO8601"]
}
mutate {
remove_field => [ "firstjson", "secondjson" ]
}
}
Cela crée un document à l'intérieur du ElasticSearch. J'ai un champ nommé operation.createdAt qui est correctement reconnu comme un champ de date. Mais pour quelque raison, cette ligne:
date {
match => [ "operation.createdAt", "ISO8601"]
}
ne définit pas le champ @timestamp. Le champ @timestamp actuel est défini au moment de l'insertion du document. Qu'est-ce que je fais mal?