Full text search engines like Apache Lucene are very powerful technologies to add efficient free text search capabilities to applications. However, Lucene suffers several mismatches when dealing with object domain models. Amongst other things indexes have to be kept up to date and mismatches between index structure and domain model as well as query mismatches have to be avoided.
Hibernate Search addresses these shortcomings - it indexes your domain model with the help of a few annotations, takes care of database/index synchronization and brings back regular managed objects from free text queries. To achieve this Hibernate Search is combining the power of Hibernate and Apache Lucene.
Since version 5.6
Hibernate Search sports an experimental integration with Elasticsearch.
Elasticsearch is built on Apache Lucene so we can now expose very similar features, making most
of this reference documentation a valid guide to both approaches.
For details specific to Elasticsearch, jump to Chapter 11, Integration with Elasticsearch.
The other sections of this guide will assume you’re using Lucene without the Elasticsearch indirection.