Как установить индекс Hibernate Lucene, чтобы он указывал на общее местоположение (чтобы на локальном сервере не создавался индекс) - PullRequest
0 голосов
/ 19 февраля 2019

В своем приложении я собираюсь реализовать спящий люцен.Мое приложение будет развернуто в кластерной среде.

Теперь я не могу выяснить, каким образом я могу указать расположение всех индексов люцены в общем расположении.Таким образом, к нему можно получить доступ через сеть.

1 Ответ

0 голосов
/ 19 февраля 2019

Можно, но это не так просто, как иметь общий каталог: два экземпляра вашего приложения не могут одновременно обращаться к одним и тем же индексным файлам.

Таким образом, обычно предпочтительным решением является:

  1. Только один «главный» узел имеет доступ к «главной» копии индекса, а все другие узлы отправляют «запросы на запись» на этот «главный» узел.
  2. Периодически копируют «главный»скопировать индекс на «подчиненные» узлы, чтобы они могли его прочитать, даже если их копия всегда будет немного устаревшей.

Hibernate Search обеспечивает реализации обоих механизмов:

  1. Архитектура ведущий / ведомый реализована благодаря бэкэнду JMS или бэкэнду JGroups .Обратите внимание, что бэкэнд JMS заметно менее глючит.Также обратите внимание, что вам придется настраивать JMS или JGroups самостоятельно, и это также может потребовать определенных знаний.
  2. Копирование осуществляется благодаря поставщикам каталогов filesystem-master и filesystem-slave .

Итак, это немного сложно.

Другой вариант , возможно, проще, это использовать интеграцию Elasticsearch , перемещая индексв удаленный кластер.Его проще использовать, но у него есть некоторые нюансы, поскольку он все еще экспериментален.

Мы планируем обеспечить первоклассную поддержку интеграции Elasticsearch в следующей версии Hibernate Search, версия 6.

...