#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