2013-04-30 13 views
5

Indeksuję tweety i chcę odwzorować pole created_at na datę. Datę przykład wygląda następująco:ElasticSearch nie odwzorowuje Format czasu JODA

'created_at': 'Wed Sep 21 05:19:16 +0000 2011' 

który stosując format czasu Joda, zorientowałem się, że:

"format" : "EEE MMM dd HH:mm:ss +SSSS yyyy", 

Jednak gdy próbuje indeksu nowy tweet pojawia się następujący błąd:

{u'status': 400, u'error': u'RemoteTransportException[[Rattler][inet[/192.155.85.243:9301]][index]]; nested: MapperParsingException[Failed to parse [created_at]]; nested: MapperParsingException[failed to parse date field [2013-04-30 20:34:43], tried both date format [yyyyMMdd HH:mm:ss], and timestamp number]; nested: IllegalArgumentException[Invalid format: "2013-04-30 20:34:43" is malformed at "-04-30 20:34:43"]; '} 

próbowałem zmiany formatu daty w użyciu

yyyy-MM-dd HH:mm:ss 
EEE, dd MMM yyyy HH:mm:ss Z 
EEE dd MMM yyyy HH:mm:ss Z 
EEE MMM dd HH:mm:ss +0000 yyyy 

i kilka innych odmian, które można zobaczyć i nie ma szczęścia. Używam następującego połączenia, aby utworzyć początkowy dokument tweetowy:

curl -XPUT 'http://localhost:9200/twitter/tweet/1' -d '{ 
    "tweet" : { 
     "properties" : { 
      "created_at" : {"type" : "date", "format" : "EEE dd MMM yyyy HH:mm:ss Z"} 
     } 
    } 
}' 

Każda pomoc jest bardzo ceniona!

+0

można zaksięgować przykład zapis, że się nie powiedzie? – imotov

Odpowiedz

9

Podany format czasu Joda nie jest całkowicie poprawny. S jest za ułamek sekundy, a nie zgodnie ze wskazówkami czasowymi. Znak "+" jest również zawarty w analizatorze składni strefy czasowej.

udało mi się analizować format daty twitter w elasticsearch z tego formatu specyfikatora:

"format": "EE MMM d HH:mm:ss Z yyyy" 
Powiązane problemy