A search engine is a critical component of your Liferay Portal installation. If you’re here, you probably know the basics already and want to configure a search engine for your Liferay Portal deployment.
Liferay Portal ships with Elasticsearch, a highly scalable, full-text search engine. Elasticsearch is well-supported and almost certainly meets any search and indexing need you have. For deployment settings, learn to configure a standalone or remote Elasticsearch server or cluster here.
Solr is also supported in Liferay Portal.
Choosing a Search Engine
Elasticsearch and Solr are both supported, but there are some differences in how they work with Liferay Portal. In certain cases, you must choose Elasticsearch.
If you answer yes to either of these questions, you must choose Elasticsearch:
You’re using Liferay Commerce, Liferay’s commerce solution.
Your custom search code requires the use of the
TermsSetFilterAPI or the Geolocation APIs that are implemented in the Liferay Connector to Elasticsearch.
Liferay Commerce requires the
TermsSetFilter implementation available in the Elasticsearch connector, so you must use Elasticsearch if you’re using Liferay Commerce.
Both of these Elasticsearch-only developer features are not currently implemented in the Liferay Connector to Solr, but may be added in the future. If you must use either of those features in your search solution’s code, use Elasticsearch. If you’re using Liferay Commerce, use Elasticsearch. Otherwise, feel free to use Elasticsearch or Solr to index your portal content.
Another factor to consider in your search engine selection is JDK version. The search engine and Liferay Portal must use the same JDK version and distribution (e.g., Oracle Open JDK 1.8.0_201). Consult the Elasticsearch compatibility matrix and the Liferay Portal compatibility matrix to learn more about supported JDK distributions and versions. This consideration is not necessary for Solr, because no JVM level serialization happens between the servers. All communication occurs at the HTTP level.