Поиск в режиме гибернации по сравнению с spring-data-solr , spring-data-elasticsearch

#spring-boot #elasticsearch #hibernate-search

Вопрос:

У меня есть веб-приложение Spring boot, Spring Data JPA (hibernate) и я хочу ввести функцию текстового поиска.

Я понимаю следующее

  • Как поиск в режиме гибернации, так и весенние данные-* могут быть интегрированы в мое приложение
  • Поиск в режиме гибернации может работать со встроенным Lucene или внешним эластичным поиском.
  • Внешний эластичный поиск/ solr имеет свои преимущества, но я согласен с

    встроено также для начала.

Мои вопросы

  • Какая библиотека лучше подходит для легкой разработки и обслуживания.
  • Я вижу много плюсов и минусов solr против elasticsearch, но мне нужны плюсы и минусы Hibernate search против spring-data-*
  • Я нашел пример внедрения поиска в режиме гибернации в существующем приложении. но ничего о spring-data-, как переиндексировать или запустить индексацию существующих данных базы данных в spring-data-

Ответ №1:

Я явно предвзят, так как я разработчик Hibernate, но я могу, по крайней мере, предоставить некоторые элементы, ориентированные на поиск в режиме гибернации. Что касается того, что «лучше», это вам решать.

Основное отличие заключается в том, что Hibernate Search обеспечивает интеграцию между JPA и вашим индексом по выбору (Lucene или Elasticsearch).:

  • Поиск в режиме гибернации автоматически добавит/обновит/удалит документы в вашем полнотекстовом индексе в соответствии с изменениями в ваших объектах JPA (как только вы совершите транзакцию).
  • Поиск в режиме гибернации позволит вам создать полнотекстовый запрос (полнотекстовый мир) и получить результаты в виде управляемых объектов (мир JPA).

Насколько я понимаю, Spring-Data-Elasticsearch ориентирован на доступ к Elasticsearch и не имеет никакой интеграции JPA. То есть вы можете использовать Spring-Data-JPA, и вы можете использовать Spring-Data-Elasticsearch, но они не будут взаимодействовать друг с другом. У вас будет две отдельные модели, которые вы будете обновлять и запрашивать отдельно.

Некоторые другие элементы:

  • Если вам не нужен распределенный индекс, поиск в режиме гибернации может выполняться во встроенном режиме Lucene без всего стека Elasticsearch. Вероятно, он будет более легким.
  • Поиск в режиме гибернации в настоящее время не очень гибок, когда речь заходит о настройке отображения Elasticsearch или использовании расширенных функций Elasticsearch из-за уровня абстракции. ПРАВКА: Теперь, когда был выпущен Hibernate Search 6, это уже не так.
  • Модуль Spring-Data-HibernateSearch был разработан в прошлом, но больше не поддерживается активно: https://github.com/snowdrop/spring-boot-hibernate-search-booster