legacy-knowledge-base
公開されました Jul. 2, 2025

Elastic Cloud 上の Elasticsearch に接続するように Liferay DXP を構成する方法

投稿者

Tibor Lipusz

knowledge-article-header-disclaimer-how-to

knowledge-article-header-disclaimer

legacy-article

learn-legacy-article-disclaimer-text

この記事では設定例のみを示しており、ローカル/オンプレミス デプロイメントで Liferay DXP を Elasticsearch と共に設定する方法に精通していることを前提としています。

目次

環境 - Elastic Stack

解決 - Elastic Stack 7.x and 8.x

  1. 前提条件:
    • Elastic Cloud のトライアルまたは有料アカウント
    • Elasticsearch で、必要な 4 つのアナライザー プラグイン (analysis-icu、analysis-kuromoji、analysis-smartcn、analysis-stempel) が有効になっていることを確認します (デプロイメントを選択 > Edit > Elasticsearch service > Manage user settings and extensions > Extensions)
  2. elasticsearch.ymlに次のプロパティを追加します: Edit > Elasticsearch service > Manage user settings and extensions > User Settings of your deployment へ移動:
    • cluster.indices.close.enable: true
  3. デプロイメント作成プロセスの最後に Elastic Cloud から提供されるデプロイメント資格情報を保存します。
    • username: elastic
    • password: <password>
  4. デプロイメントの概要ページから、Elasticsearch Service Endpoint をコピーします。これは次のようになります:
    • https://liferay****.gcp.cloud.es.io
    • 9243 はHTTPポートです。DXP 7.3 および 7.4 では必要ありませんが、指定できます。ただし、DXP 7.2では、以下の設定でトランスポート ポートに9343を指定する必要があります。
  5. Liferay DXPが実行中の場合は停止します。
  6. [Liferay-Home]/osgi/configs に以下の内容の com.liferay.portal.search.elasticsearch7.configuration.ElasticsearchConfiguration.configを作成します。
    • DXP 7.3 7.4
      • networkHostAddresses=["https://liferay***.gcp.cloud.es.io"]
        productionModeEnabled=B"true"
        username="elastic"
        password="<password>"
        authenticationEnabled=B"true"
        httpSSLEnabled=B"true"
        truststorePassword="<password-of-the-JDK-cacerts-file>"
        truststorePath="/PATH/TO/JDK/cacerts"
        truststoreType="jks"
      • networkHostAddresses: この単一のトランスポート アドレス (Elasticsearch Endpointから取得可能) は、コネクタ構成で設定する必要がある唯一のアドレスです。
      • truststorePath: JDK11の場合は JAVA_HOME/lib/security JDK8の場合は JAVA_HOME/jre/lib/security に有るデフォルトのcacertsファイルを指します。パスワードのデフォルトはchangeitです。
      • Elastic CloudのSecurity related restrictionsもご参照ください。
    • DXP 7.2:
      • clusterName="5b8cfb0167c54ab4afb1bbd157471f77"
        clientTransportSniff=B"false"
        operationMode="REMOTE"
        transportAddresses=["5b8cfb0167c54ab4afb1bbd157471f77.us-west1.gcp.cloud.es.io:9343"]
      • clusterName: Elasticsearch Endpointから取得されます。
      • clientTransportSniff: スニッフィングを無効にする必要があります。(参照)
      • transportAddresses: この単一のトランスポート アドレス (Elasticsearch Endpointから取得可能) は、コネクタ構成で設定する必要がある唯一のアドレスです。 "Elasticsearch Service でホストされているデプロイメントはproxyの背後にあるため、トランスポート クライアントが Elasticsearch クラスターと直接通信することはできません (参照)”。9343 を使用することを忘れないでください。
  7. (DXP 7.2 のみ) [Liferay-Home]/osgi/configscom.liferay.portal.search.elasticsearch7.configuration.XPackSecurityConfiguration.config に次の内容を追加します:
    • certificateFormat="PKCS#12"
      sslKeystorePath=""
      sslKeystorePassword=""
      sslTruststorePath="/PATH/TO/cacerts.p12"
      sslTruststorePassword="changeit"
      requiresAuthentication=B"true"
      username="elastic"
      password="<password>"
      transportSSLVerificationMode="certificate"
      transportSSLEnabled=B"true"
    • sslTruststorePath: 次のコマンドを使用して、JDK のデフォルトの cacerts ファイルからすべてのエントリを PKCS#12 ファイルにエクスポートできます: keytool -importkeystore -srckeystore /PATH/To/JDK/cacerts -srcstorepass changeit -destkeystore /PATH/TO/cacerts.p12 -deststoretype PKCS12 -storepass changeit
    • Elastic Cloud のSecurity related restrictions もご参照ください 。
  8. (DXP 7.2 のみ) Connector to Elasticsearch 7 が以前にデプロイされていない場合は、LPKG ファイルをダウンロードして [Liferay-Home]/osgi/marketplaceに配置します。
  9. Liferay DXPを起動します。
  10. コントロール パネルの検索管理に移動し、接続情報を確認します(DXP 7.1+)。すべてが正常に動作している場合は、次のように表示されます。
    • search-admin-connections-7.4-u81-elasticsearch-8.8.1-ec-screenshot-1.png
  11. インデックス アクションを使用して、完全な再インデックス (検索インデックスを再構築) を実行し、スペル チェック インデックス (スペルチェック辞書のインデックスを再構築します。) も再インデックスします。

環境 - Elastic Stack 6.8.x

解決 - Elastic Stack 6.8.x

  1. 事前: デプロイメントのカスタマイズ画面で、必要な 4 つのアナライザー プラグイン (analysis-icu、analysis-kuromoji、analysis-smartcn、analysis-stempel) が設定されていることを確認します。
  2. デプロイメントの編集画面のユーザー設定の上書きセクションの elasticsearch.yml に次のプロパティを追加します:
    • cluster.indices.close.enable: true
  3. デプロイメント作成プロセスの最後に Elastic Cloud から提供されるデプロイメント資格情報を保存します。
    • username: elastic
    • password: <password>
  4. デプロイメントの概要ページからElasticsearch ServiceDeployment Endpointをコピーします。これは次のようになります:
  5. Liferay DXPを停止します。
  6. [Liferay-Home]/osgi/configs に次の内容のcom.liferay.portal.search.elasticsearch6.configuration.ElasticsearchConfiguration.configを作成します。
    • clusterName="5b8cfb0167c54ab4afb1bbd157471f77"
      operationMode="REMOTE"
      transportAddresses=["5b8cfb0167c54ab4afb1bbd157471f77.us-west1.gcp.cloud.es.io:9343"]
      clientTransportSniff=B"false"
    • clusterName: Deployment Endpointから取得されます。
    • clientTransportSniff: スニッフィングを無効にする必要があります。 (参照)
    • transportAddresses: この単一のトランスポート アドレス (Elasticsearch Endpointから取得可能) は、コネクタ構成で設定する必要がある唯一のアドレスです。 "Deployments hosted on Elasticsearch Service are behind proxies which prevent the transport client from communicating directly with Elasticsearch clusters" (参照). 9343 を使用することを忘れないでください。
  7. [Liferay-Home]/osgi/configs に次の内容のcom.liferay.portal.search.elasticsearch6.xpack.security.internal.configuration.XPackSecurityConfiguration.configを作成します:
    • certificateFormat="PKCS#12"
      sslKeystorePath=""
      sslKeystorePassword=""
      sslTruststorePath="/home/tibusz/liferay/bundles/cacerts.p12"
      sslTruststorePassword="changeit"
      requiresAuthentication=B"true"
      username="elastic"
      password="<password>"
      transportSSLVerificationMode="certificate"
      transportSSLEnabled=B"true"
    • sslTruststorePath: 次のコマンドを使用して、JDKのデフォルトのcacertsファイルからすべてのエントリをPKCS#12ファイルにエクスポートできます: keytool -importkeystore -srckeystore /PATH/To/JDK/cacerts -srcstorepass changeit -destkeystore /PATH/TO/cacerts.p12 -deststoretype PKCS12 -storepass changeit
    • Elastic Cloudの Security related restrictions もご参照ください。 
  8. Liferay Enterprise Search Security が以前にデプロイされていない場合は、LPKG ファイルをダウンロードして [Liferay-Home]/osgi/marketplaceに配置します。
  9. Liferay DXP を開始。
  10. コントロールパネルの検索に移動し、接続情報を確認します。
    • DXP 7.2: すべてが正常に動作している場合は、次のような画面が表示されます:
      • Search Engine Vendor: Elasticsearch, Client Version: 6.8.6, Nodes: 5b8cfb0167c54ab4afb1bbd157471f77: [instance-0000000001 (6.8.10), instance-0000000000 (6.8.10), tiebreaker-0000000002 (6.8.10)]
    • DXP 7.3:「接続」タブに移動し、「アクティブな接続」セクションを確認します:
      • DXP-7.3-with-ES-on-EC-Connections.png
  11. インデックス管理を使用して、完全な再インデックス (検索で利用するインデックスを再構築する。) を実行し、スペル チェック インデックス (スペルチェック用インデックスを再構築する。) も再インデックスします。

Enterprise Search Monitoring/X-Pack Monitoring の設定

Kibanaサービスはserver.basePath と server.rewriteBasePathなどの必要なユーザー設定をサポートしていないため、ホストされているKibanaを接続するように Liferay Enterprise Search Monitoring を構成することができません

トラブルシューティング

サーバー証明書のダウンロードとインポート

通常、Azure、AWS、GCP のサーバーの証明書は信頼できる CA によって署名されているため、JDK のデフォルトの cacerts ファイルで十分です。接続の問題 (NoNodeAvailableException など) が発生した場合は、サーバーの証明書を取得してインポートし、DXP のコネクタ構成で使用してください。:

  1. Elasticsearchデプロイメントの証明書をダウンロードしてインポートします
    1. PEM 形式でサーバーの証明書をダウンロードします (たとえば、ブラウザの HTTPS 接続検査ツールまたは openssl を使用します):
      • openssl s_client -connect 5b8cfb0167c54ab4afb1bbd157471f77.us-west1.gcp.cloud.es.io:9243 -showcerts
      • サーバー gcp.cloud.es.io の Base64 でエンコードされたテキスト(“-----BEGIN CERTIFICATE-----“ と “-----END CERTIFICATE -----“ の間) が対象の証明書です。
    2. 証明書のテキストを server.pem というファイルにコピーします。
    3. サーバーの証明書をクライアント(Liferay DXP)のPKCS# 12形式のトラストストアにインポートします。 (elastic-certificates.p12 はすでに作成されているものとします):
      keytool -importcert -keystore elastic-certificates.p12 -storepass <password> -alias <preferred-alias> -file server.pem
  2. この .p12 ファイルを使用するようにコネクタ構成を更新します。

Elastic Cloud の制限

Elasticsearch と Kibana のすべての機能と構成が Elastic Cloud でサポートされているわけではありません。詳細については、以下の記事を参照してください:

https://www.elastic.co/guide/en/cloud/current/ec-restrictions.html

Cloud Provider の制限

選択したクラウド プロバイダーとサブスクリプション方法によっては、Elasticsearch Service のデプロイメントに追加の制限が適用される場合があります。影響を受ける機能の詳細については、次のリソースを参照してください:


Liferay DXP で利用可能な Elasticsearch コネクタの技術的な概要につきましては、こちらの記事をご参照ください。 

did-this-article-resolve-your-issue

legacy-knowledge-base