2016-08-05 38 views
5

Ich versuche, die folgende JSON-Eingabe an Elasticsearch zu senden, aber ich erhalte einen Parserfehler.Elasticsearch Datumsformat

Dies ist der JSON-Eingang

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

der Index-Definition

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

Und der Fehler mit dem "Zeitstempel" -Feld verbunden.

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

Ich versuchte mit einigen Datumsformaten, aber niemand war Erfolg. Kann jemand mir helfen, das korrekte Format zu definieren, um das Feld "timestamp" in elasticsearch zu analysieren?

Danke !!!

+1

Sie müssen den '[Europe/Paris]' Teil entfernen, es wird nicht benötigt, da '+02: 00' ausreichend ist. – Val

Antwort

4

Wie Sie in der Zuordnung sehen können, ist Ihr Feld timestamp als date Typ mit Format YYYY-MM-DD'T'HH:mm:ssZ zugeordnet. Elasticsearch möchte daher, dass das Feld timestamp im selben Format übergeben wird. Die Daten, die Sie übergeben, sind 2016-07-15T15:29:50+02:00[Europe/Paris], einschließlich [Europe/Paris] nach Zonendaten, die nicht im Mapping angegeben sind und nicht dem Standardformat ISO 8601 entsprechen, das von Elasticsearch unterstützt wird (mehr Daten verfügbar here).

Sie können mehr über das von Elasticsearch unterstützte Standarddatumsformat lesen here.

Also entweder haben Sie bestanden zusätzliche Daten zu entfernen, es zu Elasticsearch und halten nach Mapping

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

oder Ihre Zuordnung Format benutzerdefinierte Datum ändern, die die joda Syntax folgt here definiert. In Ihrem Fall, wenn es eine Literalzone ist, müssen Sie auch z verwenden.