2015-07-07 4 views
0

Я пытаюсь переиндексировать данные для корректировки форматов даты, однако я встречаю исключение MapperParsingException при разборе поля даты в формате 'Thu Jan 01 02:00:00 SAST 1970'. Я использовал сопоставление dateOptionalTime, которое, я думаю, ошибочно.MapperParsingException при переиндексации данных

Ни один из встроенных форматов на ссылке Elasticsearch Date Format, по-видимому, подходит для счета. Является ли это чем-то, что я должен специально настроить или использовать встроенную версию формата даты?

EDIT 1: отображения

{ 
    "mappings": { 
     "users": { 
      "properties": { 
       "creationdate": { 
        "type": "date", 
        "format": "dateOptionalTime" 
       }, 
       "email": { 
        "type": "string" 
       }, 
       "firstlogin": { 
        "type": "boolean" 
       }, 
       "firstname": { 
        "type": "string" 
       }, 
       "lastloggedin": { 
        "type": "date", 
        "format": "dateOptionalTime" 
       }, 
       "lastname": { 
        "type": "string" 
       }, 
       "lastprofileupdate": { 
        "type": "date", 
        "format": "dateOptionalTime" 
       }, 
       "userid": { 
        "type": "string" 
       }, 
       "username": { 
        "type": "string", 
        "fields": { 
         "raw": { 
          "type": "string", 
          "index": "not_analyzed" 
         } 
        }, 
        "copy_to": [ 
         "username.raw" 
        ] 
       } 
      } 
     } 
    } 
} 
+0

ли вы удалить и заново создать индексы после изменения отображения? Можете ли вы опубликовать свое картографирование? –

+0

Да, я удалил его до изменения отображения и воссоздания индекса. – emilio

+0

Вы должны удалить и воссоздать индексы после изменения сопоставления. –

ответ

0

Попробуйте это отображение вместо

{ 
    "mappings": { 
     "users": { 
      "properties": { 
       "creationdate": { 
        "type": "date", 
        "format": "E MMM d H:m:s z Y" 
       }, 
       "email": { 
        "type": "string" 
       }, 
       "firstlogin": { 
        "type": "boolean" 
       }, 
       "firstname": { 
        "type": "string" 
       }, 
       "lastloggedin": { 
        "type": "date", 
        "format": "E MMM d H:m:s z Y" 
       }, 
       "lastname": { 
        "type": "string" 
       }, 
       "lastprofileupdate": { 
        "type": "date", 
        "format": "E MMM d H:m:s z Y" 
       }, 
       "userid": { 
        "type": "string" 
       }, 
       "username": { 
        "type": "string", 
        "fields": { 
         "raw": { 
          "type": "string", 
          "index": "not_analyzed" 
         } 
        }, 
        "copy_to": [ 
         "username.raw" 
        ] 
       } 
      } 
     } 
    } 
} 
+0

имя часового пояса не поддерживается JODA – keety

+0

Это ошибка, поскольку она не может обрабатывать часовой пояс (SAST ..). Вероятно, лучше было бы переиндексировать исходный код и обеспечить импорт в формате, который может обрабатывать Joda. – emilio

1

Как вы подозревали, что вам нужно будет использовать custom date format.

К сожалению, хотя приведенный выше пример использует timezone names i.e "z", который не поддерживается JODA.

Если это возможно для Вас, чтобы изменить формат временной зоны для использования zone id вы можете использовать пользовательский формат следующим образом:

Example Date: "Thu Jan 10 02:00:00 Africa/Johannesburg 1970"  
lastloggedin" : { 
       "type": "date", 
       "format" : "EEE MMM dd HH:mm:ss ZZZ y"    
      }, 
Смежные вопросы