Elasticsearch は Liferay DXP 7.1 のデフォルト検索エンジンです。Liferay Foundation suite にはLiferay Connector to Elasticsearch 6というElasticsearchアダプターが含まれています。このアダプターは システム設定またはOSGi設定ファイルから設定することができます。com.liferay.portal.search.elasticsearch.configuration.ElasticsearchConfiguration.cfg
というOSGi 設定ファイルは[Liferay_Home]/osgi/configsにデプロイされます。
以下はLiferayのElasticsearch アダプターの設定の一覧です。システム設定(検索カテゴリ内のElasticsearch 6エントリ)で表示される順にリストされています。
Resolution
clusterName=LiferayElasticsearchCluster
クラスターを統合する名前を設定するString値です。運用モードをリモートに設定している場合、名前が一致している必要があります。(参考:リモート運用モード)
operationMode=EMBEDDED
運用モードはEMBEDDED、REMOTEの2種類があります。独立したElasticsearchクラスターに接続する場合はREMOTEで設定します。インターナルのElasticsearchインスタンスでLiferayを開始する場合はEMBEDDEDで設定します。Embeddedモードは本番環境ではサポートされていません。
indexNamePrefix=liferay-
検索インデックス名のPrefixとしてString値を設定します。通常、デフォルト値の変更は推奨しません。変更した場合は、ポータルの全インデックスを再構築し、Elasticsearchの管理コンソールから手動で以前のインデックスを削除してください。
indexNumberOfReplicas=
各インデックスのレプリカ数を設定します。 設定しない場合、レプリカは使用されません。 変更を有効にするには、再インデックスが必要です。
indexNumberOfShards=
Liferayインデックスを作成するときに使用するインデックスシャードの数を設定します。 設定しない場合は、単一のシャードが使用されます。 変更を有効にするには、再インデックスが必要です。
bootstrapMlockAll=false
このブーリアン設定がtrueの場合、RAM内にプロセスアドレス空間スペースを確保し、Elasticsearchのメモリースワップ (詳細は こちら)を抑制します。
logExceptionsOnly=true
このブーリアン設定がtrueの場合、Elasticsearchからの例外のみをログし、再度例外の生成をしないようにします。
retryOnConflict=5
ドキュメントの取得時から、アップデートの間までに変更が生じ、バージョン不一致が起きた際のリトライ回数の整数値を設定します。(詳細は こちら)
discoveryZenPingUnicastHostsPort=9300-9400
discovery.zen.ping.unicast.hosts
の値を作成する時に使用する、ポート範囲のString値を設定します。同一ポート範囲に存在する複数のElasticsearchノードは、同じコンピューターでゴシップルーターとして動作します。(詳細は こちら)
networkHost=
ノードがホスト名又はIPアドレスにバインドし、このホストをクラスター内の他ノードに公開するように指示を出すString値を設定します。これはバインドホストと、公開ホストを同時に設定するショートカットです。
(詳細は こちら)
networkBindHost=
ノードをバインドするリクエストを受け取るネットワークインターフェイスのString値を設定します。(詳細は こちら)
networkPublishHost=
ノード同士が接続できるように、クラスター内の他ノードに知らせる単一インタフェイスのString値を設定します。(詳細は こちら)
transportTcpPort=
ノード間で通信するポートをバインドするにはこのString値を設定します。ポート番号は1つもしくは範囲を指定可能です。(詳細は こちら)
transportAddresses=localhost:9300
リモートのElasticsearchノードが接続するアドレスを設定するString値です。この値は、運用モードがリモートに設定されている時に必要になります。(詳細は こちら) 必要に応じたノードを設定できます。
clientTransportSniff=true
クラスターのSniff(スニッフ)を有効にし、クラスター内のデータノードを動的に見つけるにはこのブーリアン設定をtrueにします。(詳細は こちら)
clientTransportIgnoreClusterName=false
接続されたノードのクラスター名認証を無効にするにはこのブーリアン設定をtrueにします。(詳細は こちら)
clientTransportPingTimeout=
クライアントノードがノードからのping応答を待つ時間(秒)。 設定しない場合、Elasticsearch のデフォルト値 client.transport.ping_timeout
が使用されます。
clientTransportNodesSamplerInterval=
リストされ接続されているノードがどの頻度でsample/pingをするかクライアントノードに設定する String値です。(詳細は こちら )
httpEnabled=true
この設定値をfalseにすることで、全ノードでhttpリクエストを受け取らないようにします。この設定で全ノードが、RESTリクエストを直接受け取らないようになります。
この設定はElasticsearch 6.3で廃止されたため、コネクタの対応する設定も廃止予定です。 この設定は組み込みのElasticsearchサーバー構成にのみ使用されていたため、その廃止は本番環境への影響を最小限に抑えます。
httpCORSEnabled=true
クロスオリジンリソースシェアリングを無効にするにはこのブーリアン設定をfalseにします。(例:別のブラウザーがElasticsearchにリクエストをできるか否か)無効の場合、elasticsearch-headなどのウェブフロントツールは接続できません。(詳細はこちら)
httpCORSAllowOrigin=/https?:\\/\\/localhost(:[0-9]+)?/
HTTP CORSが有効になった時にString値のオリジンを設定します。(詳細は こちら)
httpCORSConfigurations=
HTTP CORSのカスタム設定のString値を、YML フォーマット(elasticsearch.yml)で設定します。(詳細は こちら)
additionalConfigurations=
組み込みElasticsearchのカスタム設定のString値を、YMLフォーマットで設定します。
参考資料: Liferay Elasticsearchアダプターに設定を追加
additionalIndexConfigurations=
Liferayインデックスのカスタム設定のString値を、JSONまたはYMLフォーマットで設定します。
参考資料: Liferay Elasticsearchアダプターに設定を追加
additionalTypeMappings=
LiferayDocumentTypeのString値のカスタムマッピングを、JSONフォーマット(Elasticsearch Mapping APIを設定する資料を参照)で設定します。
overrideTypeMappings=
Liferay DXPのデフォルトの型マッピングを上書きします。これは高度な機能であり、厳密に必要な場合にのみ使用する必要があります。
この値を設定した場合、Liferay DXPソースコードでLiferayドキュメントタイプを定義するために使用されるデフォルトのマッピング(例:liferay-type-mappings.json
)は完全に無視されるため、変更するセグメントだけでなく、マッピング定義全体をこのプロパティに含めます。
syncSearch=true
有効にした場合、検索はElasticsearchの検索スレッドプールではなく呼び出し元のスレッドで実行されます。
組み込みのElasticsearch Serverにのみ影響を与える設定
これらの設定(上記で定義)は、組み込みElasticsearchサーバーを構成するときにのみ使用することを目的としています。 これらを設定しても、リモートのElasticsearchインストールに影響はありません。
bootstrapMlockAll
discoveryZenPingUnicastHostsPort
networkHost
networkBindHost
networkPublishHost
transportTcpPort
httpEnabled
httpCORSEnabled
httpCORSAllowOrigin
httpCORSConfigurations
syncSearch
これらの設定はシステム設定アプリケーションで簡単に構成できます。また、前述のように、デプロイ可能なOSGiの.configファイルで指定することもできます。