Переход на новую модель

Нам необходимо обновить модель данных для ускорения поиска.
Рассматриваем 2 варианта:

  1. залить новую модель, что бы новые данные индексировались по-новому, а старые оставить как есть

  2. возможность переиндексировать старые данные
    Как понимаю мы можем сделать snapshot базы и дальше восстановить данные в новую модель.

Как лучше реализовать данные позиции ?

Я думаю это зависит от того как часто вы ищите в старых данных, и насколько велик retention period у ваших данных. Трудно сказать определенно, но я бы все-таки сколнялся к полной конвертации данных, потому что время поиска всегда не меньше времени поиска самого медленного шарда. Т.е. если ваш поисковый запрос будет выполнятся на медленном шарде (который содержит "медленные" данные), то время поиска будет не лучше чем до конвертации.

Помимо снэпшотов, вы можете использовать [Reindex API] (https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-reindex.html).

Спасибо за ответ, а можно об этом почитать в документации ?

Спасибо за ответ, а можно об этом почитать в документации ?

Если вы имеете в виду скорость запросов, то я затрудняюсь дать точное место где это описано. Это следует из архитектуры поиска

  • управляющий запросом узел посылает запросы к всем узлам, которые содержат шарды запрашиваемых индекса(ов)
  • ждет ответ от всех узлов
  • агреггирует результат, и возвращает результат

Беглый поиск по документации дал несколько полезных ссылок, с которых я бы рекомендовал начать:

  • Distributed Search краткое описание работы распределенного поиска
  • Search Options (timeout section) - явно упоминается тезис, который я озвучил в своем коментарии

Через snapshot у Вас это не получится сделать. Если под моделью вы понимаете mapping, то mapping можно поменять только переиндексацией.

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.