ошибка переиндексации при обновлении до elasticsearch 7

В настоящее время мы используем гем searchkick, и он отлично работает. Недавно я попытался обновить elasticsearch до 7 в своей локальной среде разработки. Я запустил его с помощью homebrew (после исследования, что мне нужно запустить rm -fr /usr/local/var/lib/elasticsearch). Когда я переиндексировал одну из моих моделей, я получил следующую ошибку сопоставления:

Elasticsearch::Transport::Transport::Errors::BadRequest: [400] {"error":{"root_cause":[{"type":"mapper_parsing_exception","reason":"Root mapping definition has unsupported parameters: [cosmetics/products : {properties={product={type=keyword}}}]"}],"type":"mapper_parsing_exception","reason":"Failed to parse mapping [_doc]: Root mapping definition has unsupported parameters: [cosmetics/products : {properties={product={type=keyword}}}]","caused_by":{"type":"mapper_parsing_exception","reason":"Root mapping definition has unsupported parameters: [cosmetics/products : {properties={product={type=keyword}}}]"}},"status":400}

Эта ошибка не возникает при использовании elasticsearch 6.8.4. Может ли кто-нибудь указать мне на ресурс для решения этой проблемы?


person Joel Cahalan    schedule 30.10.2019    source источник


Ответы (2)


Тип сопоставления не поддерживается в версии 7.
Чтобы решить эту проблему, удалите все типы сопоставления (например, _doc)

Индексы, созданные в Elasticsearch 6.0.0 или новее, могут содержать только один тип сопоставления. Индексы, созданные в 5.x с несколькими типами сопоставления, будут продолжать работать, как и раньше, в Elasticsearch 6.x. Типы будут объявлены устаревшими в API в Elasticsearch 7.0.0 и полностью удалены в 8.0.0.

Оцените это

И это

person Assael Azran    schedule 30.10.2019

В дополнение к отличному ответу @Assael Azran и великому ссылка, которую он поделился, вот дополнительная информация:

  1. Если у вас есть индексы, созданные в 5.x или ранее, вам нужно будет повторно проиндексировать их в версии 6.8 ПЕРЕД обновлением до 7.x
  2. Если у вас есть индексы с несколькими типами, вам потребуется переиндексируйте их для каждого типа документа.
  3. Имена пользовательских типов, например products, в вашем случае следует заменить на _doc или doc. В идеале имя типа не должно присутствовать при определении сопоставлений. См. это.
  4. Все ваши снимки 5.x или более ранние, если они есть, не будут работать на 7.x. Таким образом, вам нужно будет восстановить индексы из этих снимков, когда вы находитесь в 6.8, затем повторно проиндексировать индексы, а затем снова сделать снимок. Затем вы можете удалить индексы, а также старые снимки.

  5. Взгляните на эту ссылку на обновление.

Надеюсь это поможет

person Sandeep Kanabar    schedule 31.10.2019