2015-03-18 2 views
3

Я следующее определение индекса на дату:elasticsearch не удалось разобрать Дата

"handshaketime" : {"type":"date","format":"YYYY-MM-ddTHH:mm:ss.SSSZ"} 

И фактическая дата имеет такой вид:

"handshaketime":"2015-04-07T10:43:03.000-07:00" 

Я уточнил, что дата вступления в DB имеет вышеупомянутый формат, но elasticsearch все еще дает мне следующую ошибку.

Caused by: org.elasticsearch.index.mapper.MapperParsingException: failed to 
parse date field [2015-04-07T10:43:03.000-07:00], tried both date format 
[YYYY-MM-dd HH:mm:ss], and timestamp number with locale [] 

Я использую elasticsearch 1.4.4 с помощью jdbc_river 1.4.0.10.

Пожалуйста, расскажите мне, что происходит.

ответ

0

Вы должны указать его следующим образом: Должны быть одинарные кавычки для Т как его не идентификатор времени.

{"type":"date","format":"YYYY-MM-dd'T'HH:mm:ss.SSSZ"} 

Если вы используете скрипт, вам нужно дать его следующим образом -

{"type":"date","format":"YYYY-MM-dd'"'T'"'HH:mm:ss.SSSZ"} 
+0

Спасибо, Винеет, он по-прежнему жалуется: Причина: java.lang.IllegalArgumentException: Неверный формат: «2015-03-31T16: 25: 56.000-07: 00» искажается при «T16: 25: 56.000-07: 00 " – BoCode

+0

Я обновил ответ –

+0

Я дал команде curl -XPUT для размещения индекса doc в ES и дал следующее:" handshaketime ": {" type ":" date "," format ":" YYYY-MM-dd ' "'T' '' HH: mm: ss.SSSZ"}, Но я все равно получаю ту же ошибку? Похоже, что ES полностью игнорирует формат, потому что он должен по крайней мере жаловаться на неправильность нашего формата ... правильно? – BoCode

4

В попытке исправить эту ошибку, я наткнулся на тот же результат, несмотря на то, что @Vineeth предусмотрено. Я указал ему, что по какой-то причине ES не показывает формат, который мы поставили, но вместо этого повторяет ту же ошибку снова и снова.

Наконец, я столкнулся с сообщением об удалении всех индексов в ES и повторной отправкой нашего документа index/mapping заново (также называемого чистым списком). Вуаля! он работал, на самом деле он работал, если я только дал следующее:

"handshaketime":{"type":"date", "format": "dateOptionalTime"} 

даже не пользовательский формат, который я и @Vineeth обсуждали о !!

Так что если вы боретесь с этой проблемой, убедитесь, что в ES нет указателей, которые могут помешать вам индексировать ваш новый документ.

Спасибо, что постарались разобраться в этом вопросе @Vineeth.

+0

Работал для меня. Но все же нужно отбросить и воссоздать индекс, потому что я получаю сообщение об ошибке, если пытаюсь обновить отображение. – Vlad

Смежные вопросы