Основное отличие состоит в том, что 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