Правильный способ полнотекстового поиска в базе данных sql с использованием Elasticsearch в загрузочном приложении Spring - PullRequest
0 голосов
/ 26 февраля 2019

Я хочу добавить функцию полнотекстового поиска в мое приложение Spring Boot, данные должны храниться в базе данных SQL, я также читал, что использование ES в качестве основной базы данных не рекомендуется.Я подумал об одном: операции создания, обновления и удаления могут выполняться как в основной базе данных SQL, так и в ES (что мы можем сделать с помощью клиента REST Java высокого уровня), например, при вставке строки в SQL мыИндексируйте это также в ES, затем мы выполняем поиск, используя Elasticsearch.Я думаю, что мы также можем использовать поиск Hibernate.Это правильный подход?В противном случае какие-либо предложения?

Ответы [ 2 ]

0 голосов
/ 04 марта 2019

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

Hibernate Search автоматически добавляет / обновляет / удаляет документы в вашем полнотекстовом индексе в соответствии с изменениямив ваших сущностях JPA (как только вы совершите транзакцию).Поиск в Hibernate позволит вам создать полнотекстовый запрос (полнотекстовый мир) и получать результаты как управляемые объекты (мир JPA).Насколько я понимаю, Spring-Data-Elasticsearch ориентирован на доступ к Elasticsearch и не имеет никакой интеграции с JPA.То есть вы можете использовать Spring-Data-JPA и Spring-Data-Elasticsearch, но они не будут взаимодействовать друг с другом.У вас будет две отдельные модели, которые вы будете обновлять и запрашивать отдельно.

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

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

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

Если вам нужен только простой полнотекстовый поиск, рассмотрите postgresql, я использую его для индексации и поиска содержимого документа: https://www.postgresql.org/docs/9.1/textsearch-controls.html.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...