Liferay DXP Compatibility with Elasticsearch Service on Elastic Cloud

Elastic Cloud (EC) offers Elasticsearch Service to host your Elastic Stack as a managed service. As we see an increasing demand for cloud-based deployments at Liferay, we created this article to provide you information about the compatibility between Liferay DXP and Elasticsearch hosted on Elastic Cloud.*

Table of Contents

Introduction

This article addresses Liferay DXP and Elastic Cloud compatibility. There are additional restrictions and known issues with Elastic Cloud to take into consideration when planning to host your Elastic Stack for Liferay DXP on Elastic Cloud.

Please consult with the available user settings for the Elasticsearch Service and check Liferay DXP documentation to verify there are no conflicts between the Elasticsearch configurations or Elasticsearch-based features available in Elastic Cloud and those required by Liferay DXP. Some Liferay DXP use-cases could require configurations or features which are not available through Elastic Cloud.

Liferay Enterprise Search subscribers: as indicated here, Liferay Enterprise Search does not offer any licensing agreements with Elastic for their Elastic Cloud service.

Environment - DXP 7.3-7.4

  • Liferay DXP 7.3-7.4
  • Elastic Stack 7.x hosted on Elastic Cloud

Conclusion - DXP 7.3-7.4

The Elasticsearch 7 connector that is bundled with DXP 7.3 and 7.4 by default is using the Java REST Client which communicates with Elasticsearch over HTTP*. This communication protocol does not require Java serialization between DXP and Elasticsearch. Therefore, Liferay DXP 7.3 and 7.4 deployments can connect to Elasticsearch Service on Elastic Cloud as long as your Elasticsearch service is using a compatible version.

Environment - DXP 7.0-7.2

  • Liferay DXP 7.0-7.2
  • Elastic Stack 6.x and 7.x hosted on Elastic Cloud

Conclusion - DXP 7.0-7.2

Liferay can't ensure the compatibility between DXP and Elasticsearch hosted on Elastic Cloud due to the possible mismatch in the Java versions and the additional restrictions for the Transport Client.

There are three factors that affect the compatibility and require consideration before deciding to move your Elastic Stack to EC:

  1. Elasticsearch Version Compatibility: The Search Engine Compatibility Matrix for your DXP version lists the supported technologies and their versions, including Elasticsearch. This means, your Elasticsearch service in EC must be using a version that appears in the compatibility matrix.
  2. Transport Layer Communication: Liferay's Elasticsearch connectors available for the DXP versions indicated above use the Java Transport Client to communicate with the Elasticsearch nodes. EC must support connections over the Transport layer otherwise Liferay's Elasticsearch connectors can't connect to the Elasticsearch node(s).**
  3. Java Compatibility: As stated in Introduction to Installing a Search Engine, Elasticsearch and Liferay DXP must use the same Java version and distribution. This is because the Transport Client relies on Java serialization. According to our tests (performed in July, 2020), the Elasticsearch 6.8.10 and 7.7.1 services in EC (and the underlying Elasticsearch Docker images) use Adopt OpenJDK 64-bit 14.0.1+7 which is not a certified version for Liferay DXP according to the Compatibility Matrix.

Disclaimer: Reporting Issues to Liferay Support

When you report issues with Liferay DXP and Elasticsearch to Liferay Support, besides providing the usual information (like Liferay DXP Patch Level, connector version and config files; Elasticsearch/Kibana versions and configuration files such as elasticsearch.yml and kibana.yml; JDK version etc.) please also indicate on your ticket that you are using Elastic Cloud.

If Subscription Services' investigation determines that the root cause of the issue is related to a JDK mismatch, then Subscription Services will be limited in resolving the issue.

How to find the JDK version of my Elasticsearch Service on Elastic Cloud?

This information can be obtained through the Dev Tools console in Kibana:

Request:
GET _nodes
Relevant snippet of the response JSON:
"jvm" : {
"pid" : 572,
"version" : "14.0.1",
"vm_name" : "OpenJDK 64-Bit Server VM",
"vm_version" : "14.0.1+7",
"vm_vendor" : "AdoptOpenJDK",
"bundled_jdk" : true,
"using_bundled_jdk" : true,
"start_time_in_millis" : 1594278093230,
"mem" : {
"heap_init_in_bytes" : 2147483648,
"heap_max_in_bytes" : 2147483648,
"non_heap_init_in_bytes" : 7667712,
"non_heap_max_in_bytes" : 0,
"direct_max_in_bytes" : 0
},

How to configure Liferay DXP to connect to Elasticsearch on Elastic Cloud?

Refer to this article for an example configuration.


* This article also applies to Elastic Cloud subscriptions billed through the marketplace of the available cloud providers (Amazon Web Services (AWS), Google Cloud Platform (GCP), Microsoft Azure) as Elastic Cloud deployments are managed through Elastic's cloud console.

** Please see this article for a technical overview of the Elasticsearch connectors available for Liferay DXP. 

¿Fue útil este artículo?
Usuarios a los que les pareció útil: 0 de 0