web-dev-qa-db-fra.com

Format de date Elasticsearch

J'essaie d'envoyer l'entrée JSON suivante à elasticsearch mais j'obtiens une erreur d'analyse.

C'est l'entrée JSON

{
    "chassisNumber": "654321",
    "position": "40.480143, -3.688960",
    "issue": "Position",
    "timestamp": "2016-07-15T15:29:50+02:00[Europe/Paris]"
}

la définition de l'Index

{
   "mappings":{
      "vehicle":{
         "properties":{
            "vehicle":{
               "type":"string"
            },
            "position":{
               "type": "geo_point"
            },
            "issue":{
               "type":"string"
            },
            "timestamp":{
               "type":"date",
               "format":"YYYY-MM-DD'T'HH:mm:ssZ"
            }
         }
      }
   }
}

Et l'erreur associée au champ "timestamp".

"reason": "Invalid format: \"2016-07-15T15:29:50+02:00[Europe/Paris]\" is malformed at \"[Europe/Paris]\""

J'ai essayé avec quelques formats de date mais personne n'a réussi. Quelqu'un peut-il m'aider à définir le format correct pour analyser le champ "horodatage" dans elasticsearch?

Merci!!!

9
gleX

Comme vous pouvez le voir dans le mappage, votre champ timestamp est mappé en tant que date type au format YYYY-MM-DD'T'HH:mm:ssZ. Ainsi, Elasticsearch voudrait que le champ timestamp soit passé dans le même format. Les données que vous transmettez sont 2016-07-15T15:29:50+02:00[Europe/Paris] qui comprend [Europe/Paris] après les données de zone qui ne sont pas fournies dans le mappage et ne suivent pas la valeur par défaut ISO 8601 format pris en charge par Elasticsearch (plus de données disponibles ici ).

Vous pouvez en savoir plus sur le format de date par défaut pris en charge par Elasticsearch ici .

Donc, soit vous devez supprimer les données supplémentaires transmises à Elasticsearch et les conserver conformément au mappage

{
    "chassisNumber": "654321",
    "position": "40.480143, -3.688960",
    "issue": "Position",
    "timestamp": "2016-07-15T15:29:50+02:00"
}

ou modifiez votre mappage au format de date personnalisé qui suit la syntaxe joda définie ici . Dans votre cas, s'il s'agit d'une zone littérale, vous devez également utiliser z.

13
Sumit Kumar