Documentation

検索機能インフラストラクチャのアップグレード

Liferayをアップグレードする際に、Elasticsearchを使用した場合の検索エクスペリエンスを考慮する必要があります。 正確な手順は、既存の検索エンジンのインストールとLiferayバージョンによって異なりますが、 既存のインデックスをバックアップすることから始めてください。

  • 検索エンジン互換性マトリクス をご参照ください。 : サポートされている最新のElasticsearchバージョンを実行することが常に推奨されています。

  • Liferay 7.4から、LES(Liferay Enterprise Search)アプリケーションはLiferay DXPにバンドルされています。 追加のインストール手順は必要ありません。 詳しくは、 Liferay Enterprise Searchの有効化 をご覧ください。

  • すでにサポートされているElasticsearchのバージョンをご利用の場合は、既存のElasticsearchインスタンスをアップデートせずに使い続けることも可能です。

  • Liferay 7.4 以降、検索の調整(同義語セットおよび結果ランキング)インデックスはデータベーステーブルでバックアップされます。 Liferayのアップグレード中に検索エンジンがLiferayに接続されると、データがデータベースにプロパゲートされるようになります。 新しいElasticsearchインスタンスをセットアップする場合、 検索調整インデックスのバックアップと復元を行い、その後、 Groovyスクリプト を実行してインデックスデータを新しいデータベーステーブルに手動でインポートしなければなりません。

アップグレード手順

重要

Elasticsearchのバックアップを行ってから、この手順を進めてください。

  1. Elasticsearch 7の最低限サポートされているバージョンであることを確認してください。 そうでない場合は、サポートされている最新のElasticsearchアップグレードしてください。新しいElasticsearchクラスタをインストールし、アップグレードしたLiferayに接続することは可能ですが、ElasticsearchクラスタにLiferay DXP 7.2や7.3の検索の調整機能用のインデックスのようにプライマリストレージとして使用するインデックスがあった場合、一部のデータが失われる可能性があります。プライマリストレージに使用するインデックスのバックアップと復元 および[7.4の検索の調整インデックスのインポート]を参照してください。

1 LiferayとElasticsearch を接続し、セキュリティを設定します。

1 Liferayをアップグレードします。

1 検索インデックスとスペルチェック辞書のインデックスを再作成します。

ワークフロー統計情報インデックス を必ず再作成してください。

1 アップグレードされたシステムで 検索エクスペリエンスをテスト し、すべてが期待どおりに動作していることを確認します。

Liferay 7.4でLiferay Enterprise Searchアプリケーションを使用している場合は、 Liferay DXPにバンドルされているので、インストール手順は必要ありません。 Liferay 7.2または7.3を使用している場合は、手順を読みながらアプリケーションをインストールしてください。

アップグレードされた検索エクスペリエンスをテストする

アップグレードされた検索エクスペリエンスを手動でテストして、依存する機能が期待どおりに機能することを確認します。 何かが動作しない、または期待したものと異なる動作をしている場合は、旧バージョンと非互換の変更のドキュメントを確認してください。

LESアプリケーションはLiferay 7.2以降に名称を変更しました。

LESサブスクライバー

これらのLESアプリは、7.3のライフサイクルにおいて、その機能をより反映させ、LESアプリであることを強調するために名称が変更されました。

機能

旧アプリ名

新アプリ名

7.2設定ファイル

7.3/7.4 設定ファイル

Elasticsearchクラスターのモニタリング

Liferay Connector to X-Pack Monitoring [Elastic Stack 6.x] (英語)

Liferay Enterprise Search Monitoring

com.liferay.portal.search.elasticsearch6.xpack.monitoring.web.internal.configuration.XPackMonitoringConfiguration.config

com.liferay.portal.search.elasticsearch.monitoring.web.internal.configuration.MonitoringConfiguration.config

Elasticsearchクラスターの保護

Liferay Connector to X-Pack Security [Elastic Stack 6.x]を使用しています。

Liferay Enterprise Search Security

アクションは必要ありません。このアプリはDXP 7.4では使用できません。 その機能は、Elasticsearch 7のコネクターに統合されています。

機械学習を使用した検索アルゴリズムの最適化

Liferay Connector to Elasticsearch Learning to Rank

Liferay Enterprise Search Learning to Rank

変更なし。

Liferay 7.3と7.4のウィジェット名と構成名は同じです。

Liferay 7.2 からアップグレードする場合、アプリと構成の名前を変更すると、このようなアップグレードの影響があります。

  1. LESモニタリングウィジェットは、 Elasticsearch Monitoring に名前が変更されました。 起動時に、モジュールのアップグレード手順が実行され、 Liferay Enterprise Search Monitoring がデプロイされたときにアプリの名前が変更されます。 アクションは必要ありません。

  2. コンフィギュレーションファイル名がcom.liferay.portal.search.elasticsearch6.xpack.monitoring.web.internal.configuration.XPackMonitoringConfiguration.configからcom.liferay.portal.search.elasticsearch.monitoring.web.internal.configuration.MonitoringConfigurationに変更されました。 プロパティは以前と同じです。 ポータルの起動中に、モジュールのアップグレード手順が実行され、構成の名前が変更されます。 アクションは必要ありません。

  3. モニタリングウィジェットへのKibanaベースパスが変更されました。 kibana.ymlで元の設定を変更する必要があります。

    server.basePath: "/o/portal-search-elasticsearch-xpack-monitoring/xpack-monitoring-proxy"
    

変更後

server.basePath: "/o/portal-search-elasticsearch-monitoring/monitoring-proxy"

7.4での検索の調整インデックスのインポート

Elasticsearchクラスタには以下のLiferay DXP検索の調整のインデックスがあります。

  • liferay-[companyId]-search-tuning-rankings

  • liferay-[companyId]-search-tuning-synonyms

アップグレード前のシステムで検索の調整機能を使用していたが、アップグレード後のクラスタに検索の調整インデックス文書が存在しない場合、まず 検索の調整インデックス をバックアップしてアップグレード前のクラスタからアップグレード後のクラスタに復元し、次にGroovyスクリプトを実行してインデックスデータを新しいデータベーステーブルに手動でインポートする必要があります。 アップグレード前のクラスタをアップグレードするのではなく、新しいElasticsearchクラスタに接続する場合に発生することがあります。

Groovyインポートスクリプトを実行するには、

  1. スクリプトコンソールに移動します。 [コントロールパネル]→[サーバ管理]で[スクリプト]タブに移動します。

  2. 以下のスクリプトを実行し、結果ランキングデータをそのデータベーステーブルにインポートします。

    import com.liferay.portal.instances.service.PortalInstancesLocalService;
    import com.liferay.portal.search.tuning.rankings.storage.RankingsDatabaseImporter;
    import com.liferay.registry.Registry;
    import com.liferay.registry.RegistryUtil;
    
    Registry registry = RegistryUtil.getRegistry();
    
    PortalInstancesLocalService portalInstancesLocalService = registry.getServices(PortalInstancesLocalService.class, null)[0];
    RankingsDatabaseImporter rankingsDatabaseImporter = registry.getServices(RankingsDatabaseImporter.class, null)[0];
    
    for (long companyId : portalInstancesLocalService.getCompanyIds()) {
     rankingsDatabaseImporter.populateDatabase(companyId);
    }
    
  3. 以下のスクリプトを実行し、同義語セットのデータをそのデータベーステーブルにインポートします。

    import com.liferay.portal.instances.service.PortalInstancesLocalService;
    import com.liferay.portal.search.tuning.synonyms.storage.SynonymSetsDatabaseImporter;
    import com.liferay.registry.Registry;
    import com.liferay.registry.RegistryUtil;
    
    Registry registry = RegistryUtil.getRegistry();
    
    PortalInstancesLocalService portalInstancesLocalService = registry.getServices(PortalInstancesLocalService.class, null)[0];
    SynonymSetsDatabaseImporter synonymSetsDatabaseImporter = registry.getServices(SynonymSetsDatabaseImporter.class, null)[0];
    
    for (long companyId : portalInstancesLocalService.getCompanyIds()) {
     synonymSetsDatabaseImporter.populateDatabase(companyId);
    }
    
  4. 同義語セットと結果ランキングをテストして、すべてが期待通りに動作していることを確認してください。