紹介
Search Product Teamは、Liferay DXPとElasticsearchの互換性についてよく質問を受けます。 この一見単純な質問は意外と複雑です。複数の要因に依存し、そのうちのいくつかはLiferayの外部依存です。
単純な相性の質問の答えは、通常、これらのサブクエッションの組み合わせに依存します。
- 私の使用しているLiferay DXPは、どのメジャーバージョンのElasticsearch(例:7.x、6.x)と互換性がありますか?
- クラスターを私のバージョンのLiferay DXPと接続するために実行できるElasticsearchのマイナーバージョン範囲(例えば7.3-7.9)を教えてください。
- これらのElasticsearchのバージョンに接続するために必要な最小のDXPパッチレベル(例:7.2 SP3/FP8)は何ですか?
- Marketplaceからコネクタをインストールする必要がありますか(インストールする場合は、3.0.0、3.0.1、3.1.0など、どのバージョン)、またはデフォルトのバンドルコネクタを使用できますか。
この記事は、技術的な詳細にとらわれず、これらの根本的な互換性の問題を解明することを目的としています。 これを読めば、なぜシンプルにしながらも、さまざまなバージョンのElasticsearchとの互換性を確保することが難しいのかがよくわかるでしょう。
環境
- Liferay DXP 7.0-7.4
対象読者
- Liferay DXP サーバ管理者/DevOps エンジニア
- サポートエンジニア
- コンサルタント/セールスエンジニア
目次
互換性の情報源
Elasticsearchとの互換性についてのご質問には、以下のリソースが役立ちます。
- Liferay DXP 互換性マトリクス
- 検索エンジン適合性マトリクス
- LiferayのElasticsearchコネクタ Marketplaceのページ、みたいな。
- DXP 7.0 => Liferay Connector to Elasticsearch 6
- DXP 7.1-7.2 => Liferay Connector to Elasticsearch 7
要点: Marketplace から新しいコネクタをインストールしたり、新しい DXP のパッチレベルに移行する前に、Elasticsearch の互換性が変更されたかどうかを確認するために、常にこれらのリソースを参照してください。
相性に影響するもの
- Liferay DXP のバージョンとパッチレベル: は、利用可能な Elasticsearch コネクタのリストを決定し、したがってサポートされるメジャーバージョンを決定します。
- Liferay Elasticsearch コネクタ バージョン (Marketplace からインストールされた場合)
- Elasticsearch クライアントバージョン: 互換性のある最小のマイナーバージョンを決定します。
- Elasticsearchクライアントタイプ (例: TransportまたはHTTPクライアント)
- 互換性テスト: クライアントのバージョンとは異なる新しいマイナーバージョンとの互換性をテストするためのものです。
- 製品ニーズ: コネクターが必要な能力と機能を提供するために使用しなければならないクライアントの最小(マイナー)バージョンを指示します。
これらの要因がFix Pack/Service PackやMarketplaceのリリースにどのように影響するかなど、詳細についてご興味がある方は、引き続きご覧ください。
Liferay DXP のバージョンとパッチレベル
Liferay DXP の各バージョンには、特定の Elasticsearch のメジャーバージョンに対応した Elasticsearch への コネクタがバンドルされています:
- Liferay DXP 7.0 => Elasticsearch 2
- Liferay DXP 7.1-7.2 => Elasticsearch 6
- Liferay DXP 7.3-7.4 => Elasticsearch 7
コネクタは、いくつかの目的を持ったOSGiバンドルで構成されています。
- Liferay のインデックス & 検索 API を実装する。
- 一般的な文書やクエリを実際の検索エンジンの方言に翻訳する。
- Elasticsearchと通信するためのその他の(低レベルの)Liferayサーチフレームワークの機能を提供する。
- データの送受信
- 他のElasticsearchの機能を活用する。
これらのバンドルコネクタは、DXPの製品ライフサイクルを通じてバグフィックスやその他の変更を受け進化するため、対応するElasticsearchのマイナーバージョンが変更される場合があります。 例えば、Liferay DXP 7.2 は当初 Elasticsearch 6.5.x
と互換性がありましたが、1つ以上の Fix Pack/Service Pack で導入された修正により、執筆時点では Liferay 7.2 は 6.8.x
と互換性を有しています。 技術的な理由については後述します。
ポイント: 新しいパッチレベルに移行する前に、必ずインストールしようとしている Fix Pack の Release Notes/Important Changes と Compatibility Matrix を参照して、Elasticsearch の互換性に関する関連情報を確認してください。
Liferay Elasticsearch Connector バージョン
(以降、「Elasticsearchコネクタ」と表記します)。
リリースされたDXPのバージョンに新しいメジャーなElasticsearchのバージョンをサポートするために、Liferayは新しいコネクタを Marketplaceを通じてリリースしています。 これらのコネクタは、既製品(同梱品)のコネクタのドロップイン置き換えとして使用できます。
- DXP 7.0 => Liferay Connector to Elasticsearch 6
- DXP 7.1-7.2 => Liferay Connector to Elasticsearch 7
ほとんどの場合、あるDXPバージョンのMarketplaceで最後にリリースされたコネクタが、次のDXPバージョンですぐにバンドルされるコネクタになります。 例えば、DXP 7.3 と 7.4 には Liferay Connector to Elasticsearch 7 がバンドルされており、このコネクタは Marketplace で Liferay 7.2 用に提供されています。
コネクターはアプリ(LPKGファイルとして配布)としてMarketplaceからダウンロードでき、Liferay DXP上に配置することができます。 マーケットプレイスアプリ にはそれぞれバージョンがあり、 メジャーバージョン によって、どの Liferay DXP バージョン と互換性があるかが以下のように決定されます。
DXP版 | コネクタアプリ名 | Connector App Marketplaceのバージョン |
---|---|---|
DXP 7.0 | Liferay Connector to Elasticsearch 6 | 1.x |
DXP 7.1 | Liferay Connector to Elasticsearch 7 | 2.x |
DXP 7.2 | Liferay Connector to Elasticsearch 7 | 3.x |
バグ修正やその他のアップデートを提供するために、Liferayはこれらのアプリのマイナーバージョンとマイクロバージョンのリリースを随時リリースしています。 Elasticsearch コネクタは Liferay DXP API に依存しており、Fix Packs/Service Packs で変更されることがあるため、コネクタアプリの特定のマイナー/マイクロバージョンでは、例えば 最低 Liferay DXP Patch Levelを必要とする場合があります。
コネクタアプリ名 | Connector App Marketplaceのバージョン | 必要なDXPパッチレベル |
---|---|---|
Liferay Connector to Elasticsearch 6 | 1.0.0 |
DXP 7.0 FP42+ |
Liferay Connector to Elasticsearch 6 | 1.0.1 |
DXP 7.0 FP70+ |
Liferay Connector to Elasticsearch 6 | 1.1.0 |
DXP 7.0 FP79+ |
Liferay Connector to Elasticsearch 6 | 1.2.0 |
DXP 7.0 FP96+ |
Liferay Connector to Elasticsearch 7 | 2.0.0 |
DXP 7.1 SP5+/FP20+ |
Liferay Connector to Elasticsearch 7 | 3.0.0 |
DXP 7.2 SP1+/FP2+ ~ FP4 |
Liferay Connector to Elasticsearch 7 | 3.0.1 |
dxp 7.2 sp2+/fp5+ |
Liferay Connector to Elasticsearch 7 | 3.1.0 |
dxp 7.2 sp3+/fp8+ |
Liferay Connector to Elasticsearch 7 | 3.2.0 |
DXP 7.2 FP9+ |
可能な限り互換性を保つよう努力していますが(あるアプリのバージョンは、DXPバージョンの一連のパッチレベルと互換性を保ちます)、最小パッチレベルを上げなければならない変更も存在します。
Take-away: 私たちは、複数の拠点で「速報性」のある変更については、最善を尽くして文書化するようにしています。 Marketplaceから新しいコネクタをインストールしたり、新しいパッチレベルに移行する前に、必ず現在使用している(またはインストールを予定している)Fix Packのリリースノート/重要な変更点、 Search Engine Compatibility Matrix、またアプリのMarketplaceページでElasticsearchの互換性が変更されていないかどうか確認してください。
Elasticsearch クライアントのバージョンとタイプ
これが最も重要な要素です。
コネクターはElasticsearchのJava クライアントを使用します。 これらのクライアントは所定のElasticsearchのリリースに対応しているため、コネクタは クライアントのバージョン 6.5.0
、 6.8.16
、 7.9.0
、 7.14.1
のように使用することができます。 これらのバージョンは、 Elasticsearch の最小互換マイナーバージョンを決定します。. ( Elasticsearch Connectorsをご参照ください。テクニカルデータシート をご参照ください)。
バージョン以外に、互換性に影響するクライアント属性として、 クライアントタイプがあります。
Liferay の Elasticsearch コネクタは 2 種類の Java クライアントを使用し、それぞれ で Elasticsearch の上位マイナーバージョンとの互換性を定義しています 違いです。
DXP版 | DXP 7.0-7.2 | DXP 7.3-7.4 |
クライアントタイプ | トランスポートクライアント (2.x, 6.x, 7.x) | RESTクライアント(7.x) |
クライアント互換性 | Elastic によると: クライアントはクラスタ内のノードと同じメジャーバージョン(2.x や 5.x など)である必要があります。 クライアントは、異なるマイナーバージョン(例:2.3.x)を持つクラスタに接続することができますが、新しい機能がサポートされない可能性があります。 理想的には、クライアントはクラスタと同じバージョンであるべきです。 |
Elastic社 ドキュメントより: High Level Clientは、同じメジャーバージョンと同等以上のマイナーバージョンで動作しているElasticsearchノードと通信できることが保証されています。 通信するElasticsearchノードと同じマイナーバージョンである必要はなく、開発されたバージョンよりも新しいバージョンのElasticsearchとの通信をサポートする前方互換性があるためです。* |
* 私たちは主にHigh Level REST Clientを使用しますが、DXPが必要とする現在実装されていない機能がいくつかあるため、高レベルクライアントからLow Level REST Clientを取得します。 リクエストに必要なJSONを作成します。 Low Level Client<については、Elastic の のドキュメント では、 「すべての Elasticsearch バージョンと互換性があります」と記載されています。
Take-away:
ご覧のように、コネクタが使用するクライアントのバージョンは、すべてのケースでElasticsearchのメジャーバージョンと互換性のある最小のマイナーバージョンを決定します。 RESTクライアントでは、DXP7.3以降のElasticsearchの新しいマイナーリリースとの互換性をより柔軟に定義することが可能です。
一方、Transportクライアントはより厳密で、新しいマイナーバージョンとの互換性をマークするために、一連のテストを実行する必要があります。
新しいDXPのパッチレベルに移行する前や、Marketplaceから新しいバージョンのコネクタをインストールする前に、必ず互換性マトリックスをチェックして、重要な点を見逃さないようにして、互換性のあるバージョンを使用してDXP-Elasticsearchスタックを実行できるようにすることです。注意:クライアントが新しいマイナーバージョン(例:7.9.0)を使用しているコネクタを実行する Liferay DXP は、古いマイナーバージョンの Elasticsearch(例:7.4.0)に問題なく接続できるかもしれませんが、これらの組み合わせは Liferay ではテストされていません。
Technical note: クライアントのバージョンは、ポータルの初回起動時に Embedded または Sidecar モードで起動されるビルトイン Elasticsearch サーバーのバージョン (use for development/testing purposes only!) も定義しています。 できるだけ早く、リモート/本番モード接続の設定を行います。
互換性 テスト
Liferay は、Elasticsearch の新しいマイナーリリースで Elasticsearch コネクタのアドホックテストを行っています。 これらのマイナーリリースは、低レベルのJava APIにおける破壊的な変更(Transport Clientを使用するアプリケーションに影響を与える可能性がある)を導入することがあります。 このような場合、通常、クライアントのマイナーバージョンとコネクタ内の実装を更新する必要があります。 その際、アップデートされたコネクタは、Fix Pack/Service PackやMarketplaceのリリースを通じて提供する必要があります。
Take-away: 要するに、これらのテストの繰り返しにより、Elasticsearchのマイナーバージョンの中で最も互換性の高いものを決定し、それを互換性マトリックスに反映させているのです。 Search Engine Compatibility Matrixに加え、 Elasticsearch Connectorsをお読みください。テクニカル・データ・シート の記事をご覧ください。 この記事では、クライアントの詳細、Liferay DXPの各バージョンで互換性のあるElasticsearch(マイナー)バージョン、利用可能なMarketplaceコネクターについて説明します。
製品のニーズ
Cross-Cluster Replication (CCR) のような新しい機能のサポートを追加したり、複雑な問題を修正するために、Liferay DXP のコア配布の一部である Liferay Search API/Framework に変更を導入する必要があることがあります。 コネクタはこれらの機能やAPIに依存しているため、新しいFix PackやService Packでは、必要なコネクタがそのDXPバージョンにバンドルされていない場合、マーケットプレイスから新しいバージョンのコネクタをインストールする必要がある場合があります .
また、より新しいElasticsearchマイナーバージョン、新機能(6.7+
が必要なCCRのサポートなど)やバグ修正(LPS-120240のようなもの)では、コネクタ内のクライアントバージョンをバンプする必要がある場合がありますが、これもまた、最小互換性のあるElasticsearchマイナーバージョンの範囲をシフトすることになります。 その場合、次のFix Pack/Service Packまたは新しいMarketplaceリリースのコネクタには、これらの変更が含まれます。
Take-away: このような変更は最小限にとどめるようにしていますが、やむを得ない状況もあります。 したがって、スタックを更新する前に上記のリソースに相談することは、非常に重要なステップです。
関連資料
- 検索エンジン適合性マトリクス
- Liferay DXP Elasticsearch コネクタ:テクニカルデータシート
- Liferay DXP ホスト型Elasticsearchサービス互換性マトリクス
- Liferay DXPとElasticsearch Service on Elastic Cloudの互換性
* Elastic、Elasticsearch、X-Packは、Elasticsearch BVの商標であり、米国およびその他の国で登録されています。 をはじめ、さまざまな国で
** 執筆時現在。 最新情報については、 Search Engine Compatibility Matrix を参照してください。