2016-02-07 2 views
1

Im пытается вставить данные в Elastisearch 2.2.0 с поданной отображенные как:Elasticsearch 2.2.0 форматы даты не удалось после обновления 1.5.2

... 
"startTime": { 
    "format": "yyyy/MM/dd HH:mm:ss", 
    "type": "date" 
} 
... 

Данные, которые вставляются в (строки):

... 
"startTime":1454858900301 
... 

я получаю исключение:

MapperParsingException[failed to parse [startTime]]; nested: IllegalArgumentException[Invalid format: "1454858900301" is malformed at "0301"]; 
Caused by: java.lang.IllegalArgumentException: Invalid format: "1454858900301" is malformed at "0301" 
    at org.joda.time.format.DateTimeParserBucket.doParseMillis(DateTimeParserBucket.java:187) 
    at org.joda.time.format.DateTimeFormatter.parseMillis(DateTimeFormatter.java:780) 
    at org.elasticsearch.index.mapper.core.DateFieldMapper$DateFieldType.parseStringValue(DateFieldMapper.java:362) 
    at org.elasticsearch.index.mapper.core.DateFieldMapper.innerParseCreateField(DateFieldMapper.java:528) 
    at org.elasticsearch.index.mapper.core.NumberFieldMapper.parseCreateField(NumberFieldMapper.java:241) 
    at org.elasticsearch.index.mapper.FieldMapper.parse(FieldMapper.java:335) 

Это не произошло в E lastic версии 1.5.2 и до того, как я обновился до 2.2.0, я использовал migration plugin, который должен был перечислять все проблемы с отображением - ничего не появилось ...

Что послужило причиной исключения? Я вставляю длинную временную строку времени (в миллисекундах), которая, как предполагается, анализируется в формате, указанном в картографии, нет?

Почему он работал в версии 1.5.2 и не работает в 2.2.0?

ответ

1

Думаю, что вы должны пройти breaking change in date format в ES 2.X. Из документов,

В 2.0 мы добавили два формата: epoch_millis и epoch_second. Только поля даты, которые используют эти форматы будут иметь возможность анализировать временные метки

Инструмент миграции не обнаружит это, так как это не является проблемой отображения. В качестве разрешения вам, возможно, придется изменить формат даты на любой из epoch_millis или epoch_second.