Elasticsearchの設定情報の詳細については、Elasticsearchのドキュメンテーションを参照してください 。
Elasticsearchのクラスター名は重要です。Elasticsearchをリモートモードで実行している場合、Liferay DXPはElasticsearchクラスターを認識するためにクラスター名を使用するからです。Liferay DXP側でElasticsearchクラスター名を設定する方法については、以下のLiferay Elasticsearchコネクタの設定というセクションを参照してください。
**注:**Elasticsearchのhttp.enabled
設定は、Elasticsearch 6へのLiferayコネクタというアプリケーションのhttpEnabled
設定に対応します。
この設定は Elasticsearch 6.3で廃止されたため、コネクタの対応する設定も廃止予定です。この設定は、組み込みElasticsearchサーバーの設定にのみ使用されていたため、廃止による本番環境でのデプロイメントへの影響はわずかなはずです。
Elasticsearchの設定ファイルはYAMLで書かれていて、[Elasticsearch Home]/config
フォルダに保存されています。メイン設定ファイルはelasticsearch.yml
で、Elasticsearchモジュールを設定するために使用されます。
Elasticsearchクラスター名を設定するには、[Elasticsearch Home]/config/elasticsearch.yml
を開き、以下を指定します。
cluster.name: LiferayElasticsearchCluster
LiferayElasticsearchCluster
がクラスターに使われているデフォルトの名前なので、このままで起動が可能です。もちろん、クラスターには好きな名前を付けることができます(例:clustery_mcclusterface
)。1ノード名を同じシンタックス(node.name
プロパティ)を使って設定することも可能です。
設定ファイルよりもコマンドラインから作業する場合は、Elasticsearch Homeに行き、次のように入力します。
./bin/elasticsearch --cluster.name clustery_mcclusterface --node.name nody_mcnodeface
ノード名とクラスター名を変更することも可能です。Elasticsearchの設定が完了したら、次は起動です。
Elasticsearchを起動する
Elasticsearchを起動するために、Elasticsearch Homeへ行って、次のどちらかを入力します。
./bin/elasticsearch
Linuxをご使用の場合は上記を入力してください。
\bin\elasticsearch.bat
Windowsの場合は上記を入力してください。
Daemonとしてバックグラウンドで実行する場合は、以下のように上記のお使いのコマンドに-d
を追加します。
./bin/elasticsearch -d
ElasticsearchとLiferay DXPの両方がインストールされて実行されたら、統合します。
Liferay Elasticsearchコネクタの設定
Elasticsearchコネクタは、Elasticsearchとポータル間の統合を提供します。コネクタを設定する前に、Elasticsearchが実行されていることを確認してください。
アダプターの設定には2通りあります。
Elasticsearchアダプターは[システム設定]から手早く設定できますが、それが可能なのは開発時と試験運用時のみです。システム設定に関する詳細は こちらの資料で説明していますので参照ください。[システム設定]を設定し、その.config
ファイルを設定と一緒にエクスポートすることで、他のシステムをデプロイするための設定ファイルを生成できます。
コントロールパネルでアダプターを設定
システム設定アプリケーションからElasticsearchアダプターを設定するには、
-
Liferay DXPを起動します。
-
[コントロールパネル ] > [設定] > [システム設定] > [Foundation]へ移動します。
-
*「Elasticsearch」*を検索し(スクロールして検索するか、サーチボックスで検索) 、操作アイコン()をクリックして、編集をクリックします。
-
設定を編集して、保存をクリックします。
注:操作モードを切り替える(EMBEDDED
→ REMOTE
)場合は、再インデックスを起動する必要があります。*[コントロールパネル]→[設定]→[検索]の順に移動し、[検索で利用するインデックスを再構築する]の横にある[実行]*をクリックします。
OSGi.config
ファイルでアダプターを設定する
本番環境でのデプロイメントのためにシステムを準備するときには、繰り返しが可能なデプロイプロセスを使用します。したがって、設定が管理されたソースによって維持されている場合は、OSGi設定ファイルを使うのが最善です。
OSGi設定ファイルを使って Elasticsearchアダプターを以下の手順で設定します:
-
以下のファイルを作成します:
[Liferay_Home]/osgi/configs/com.liferay.portal.search.elasticsearch6.configuration.ElasticsearchConfiguration.config
-
propertyName="Value"
形式でファイルに設定を追加します。例えば、operationMode="REMOTE" # If running Elasticsearch from a different computer: #transportAddresses="ip.of.elasticsearch.node:9300" # Highly recommended for all non-prodcution usage (e.g., practice, tests, diagnostics): #logExceptionsOnly="false"
-
Liferay DXPを起動します。既に実行している場合は、インデックスを再生成します。
Elasticsearchの[システム設定]エントリからわかるように、最適なパフォーマンスになるようにシステムを調整するのに役立つ、設定オプションが多数あります。
このページで書かれている内容は、推奨されるElasticsearchのクラスタリングの設定方法です。しかしながら、これらは手動でのチューニング、負荷テスト、そして再度のチューニングのプロセスに代わるものではありません。
そのため、設定完了後にElasticsearchのドキュメンテーションを参照の上、設定を確認してからプロセスを実行することをお勧めします。
Elasticsearchリモートホストの設定
本番環境システムでは、ElasticsearchとLiferay DXPは別々のサーバーにインストールされています。別々のサーバにインストールされているElasticsearchをLiferay DXP側で検知させるためには、次のように設定します。
transportAddresses=[IP address of Elasticsearch Node]:9300
以下はElasticsearchクラスターの2つのノードのIPアドレスを設定する例です。
transportAddresses=["192.168.1.1:9300","192.168.1.2:9300"]
これをElasticsearchコネクタのOSGi設定ファイルに設定します。このプロパティにElasticsearchノードを必要な数だけ書き込みます。これにより、Liferay DXPに検索要求が送信されるべきIPアドレスまたはホスト名が伝えられます。システム設定を使用している場合は、Transport Addressesプロパティで値を設定します。
**注: **Elasticsearchクラスターでは、複数のElasticsearchノードのトランスポートアドレスをtransportAddresses
プロパティ内のコンマ区切りリストとして一覧表示できます。もしトランスポートアドレスが一つのみの場合、そのノードが故障した際にLiferay DXPはElasticsearchと通信できなくなります。
Elasticsearch側では、elaticsearch.yml
ファイル内のnetwork.host
プロパティを設定します。このプロパティは、バインドホスト(Elasticsearchが要求を待機するホスト)と公開ホスト(Elasticsearchが他のノードとの通信に使用するホスト名またはIPアドレス)の両方を同時に設定します。詳細はこちらで確認できます。
リモートオペレーションモード時のElasticsearchのクラスタリング
Elasticsearchのクラスタリングは簡単です。まず、node.max_local_storage_nodes
を1
より大きなものに設定します。Elasticsearchの起動スクリプトを実行すると、新しいローカルストレージノードがクラスターに追加されます。例えば、ローカルで4ノードを実行したい場合は./bin/elasticsearch
を4回実行します。詳細はこちらをご覧ください。
Elasticsearch 6アダプターでシャードとレプリカの数を設定します。indexNumberOfShards
とindexNumberOfReplicas
プロパティーを使用して、プライマリシャードとレプリカシャードの数をそれぞれ指定します。
Elasticsearchのデフォルト設定では最高で10ノードのクラスターまで稼働します。デフォルトのシャード数は5
で、レプリカシャードのデフォルト数は1
です。
**注:**ElasticsearchはZen Discovery Moduleをデフォルトで使用します。このモジュールはユニキャストディスカバリを提供しています。加えて、クラスタコミュニケーション内のノードは、TCPを通してTransportモジュールを使用しています。elasticsearch.yml
ファイルを設定するプロパティついてはElasticsearchの資料を参照してください。また、アダプターの使用可能な設定についてはLiferay DXP Elasticsearchアダプターの設定を確認してください。
Elasticsearchクラスター設定の詳細は、Elasticsearchのインデックス設定をご覧ください。
Elasticsearchコネクタのシステム設定:運用モード
Elasticsearchコネクタで使用可能な設定の一部は、1つの操作モード(REMOTEまたはEMBEDDED)にのみ適用されます。以下の表を参照してください。
アダプタ設定/動作モード | EMBEDDED | REMOTE |
---|---|---|
clusterName | x | x |
operationMode | x | x |
indexNamePrefix | x | x |
indexNumberOfReplicas* | x | x |
indexNumberOfShards* | x | x |
bootstrapMlockAll | x | - |
logExceptionsOnly | x | x |
retryOnConflict | x | x |
discoveryZenPingUnicastHostsPort | x | - |
networkHost | x | - |
networkBindHost | x | - |
networkPublishHost | x | - |
transportTcpPort | x | - |
transportAddresses | - | x |
clientTransportSniff | - | x |
clientTransportIgnoreClusterName | - | x |
clientTransportPingTimeout* | - | x |
clientTransportNodesSamplerInterval | - | x |
httpEnabled | x | - |
httpCORSEnabled | x | - |
httpCORSAllowOrigin | x | - |
httpCORSConfigurations | x | - |
additionalConfigurations | x | x |
additionalIndexConfigurations | x | x |
additionalTypeMappings | x | x |
overrideTypeMappings | x | x |
syncSearch | x | - |
*** 注:**Elasticsearch 6へのコネクタでのみ利用可能です。
1 This is, of course, a nod to all those fans of Boaty Mcboatface.