Elasticsearch サービスの設定

Elasticsearchは、あらゆるソースからデータを取り込み、任意の形式で検索してリアルタイムで視覚化できるオープンソース製品です。

WARNING
Elasticsearch 7以降は、Adobe Commerce オンクラウドインフラストラクチャではサポートされていません。 Adobe Commerce バージョン 2.3.7-p3、2.4.3-p2、および2.4.4以降では、OpenSearch サービスがサポートされています。

Adobe Commerce バージョン 2.4.4以降については、OpenSearch サービスの設定を参照してください。

  • Elasticsearchでは、商品カタログ内の商品に対して、迅速かつ高度な検索を実行します
  • Elasticsearch Analyzersは多言語をサポートしています
  • ストップワードと類義語をサポート
  • インデックス再作成操作が完了するまで、インデックス作成は顧客に影響しません
TIP
Adobeでは、Adobe Commerce アプリケーションのサードパーティ検索ツールを設定する予定がある場合でも、Adobe Commerce on cloud infrastructure プロジェクトにElasticsearchを常に設定することをお勧めします。 Elasticsearchを設定すると、サードパーティの検索ツールが失敗した場合に備えて、フォールバックオプションが提供されます。

master ブランチを含むPro統合環境およびスターター環境でのサービス設定については、次の手順を使用します。

NOTE
Adobe Commerce サポートチケット ​を送信して、Pro実稼動環境とステージング環境のサービス構成を変更します。

Elasticsearchを有効にするには:

  1. スタータープロジェクトの場合は、elasticsearch サービスを.magento/services.yaml ファイルに追加し、Elasticsearch バージョンと割り当てられたディスク容量をMB単位で指定します。

    code language-yaml
    elasticsearch:
        type: elasticsearch:<version>
        disk: 1024
    

    Pro プロジェクトの場合、ステージング環境と実稼動環境でElasticsearch バージョンを変更するには、Adobe Commerce サポートチケットを送信する必要があります。

  2. .magento.app.yaml ファイルでrelationships プロパティを設定します。

    code language-yaml
    relationships:
        elasticsearch: "elasticsearch:elasticsearch"
    
  3. コードの変更を追加、コミット、プッシュします。

    code language-bash
    git add .magento/services.yaml .magento.app.yaml && git commit -m "Enable Elasticsearch" && git push origin <branch-name>
    

    これらの変更が環境にどのような影響を与えるかについては、​ サービス ​を参照してください。

  4. デプロイメントプロセスが完了したら、SSHを使用してリモート環境にログインします。

    code language-bash
    magento-cloud ssh
    
  5. カタログ検索インデックスのインデックスを再作成します。

    code language-bash
    bin/magento indexer:reindex catalogsearch_fulltext
    
  6. キャッシュをクリーニングします。

    code language-bash
    bin/magento cache:clean
    
TIP
最初のサービス設定の後、services.yamlおよび.magento.app.yaml設定ファイルを更新することで、インストール済みサービスのソフトウェアバージョンを変更できます。 サービスのアップグレードまたはダウングレードに関するガイダンスについては、​ サービスバージョンの変更を参照してください。

Elasticsearch ソフトウェアの互換性

クラウドインフラストラクチャプロジェクト上のAdobe Commerceをインストールまたはアップグレードする場合は、常にElasticsearch サービスのバージョンとAdobe Commerce用Elasticsearch PHP クライアントとの互換性を確認してください。

  • 初回設定- services.yaml ファイルで指定されたElasticsearch バージョンが、Adobe Commerce用に設定されたElasticsearch PHP クライアントと互換性があることを確認します。

  • プロジェクトのアップグレード – 新しいアプリケーションのバージョンのElasticsearch PHP クライアントが、クラウドインフラストラクチャにインストールされているElasticsearch サービスのバージョンと互換性があることを確認します。

Adobe Commerce on cloud infrastructureのサービスバージョンと互換性のサポートは、クラウドインフラストラクチャにデプロイされたバージョンによって決まり、Adobe Commerce オンプレミスのデプロイメントでサポートされているバージョンとは異なる場合があります。 ​ サービスバージョン ​を参照してください。

Elasticsearch ソフトウェアの互換性を確認するには:

  1. ローカル ワークステーションで、プロジェクト ディレクトリに移動します。

  2. アクティブな環境のElasticsearchの詳細を表示します。

    code language-bash
    magento-cloud relationships --property=elasticsearch
    
  3. また、SSHを使用してリモート環境にログインすることもできます。

    code language-bash
    magento-cloud ssh
    
  4. elasticsearch/elasticsearchのComposer パッケージのバージョンを確認してください。

    code language-bash
    composer show elasticsearch/elasticsearch
    

    応答で、versions プロパティのインストール済みバージョンを確認してください。

    code language-none
    name     : elasticsearch/elasticsearch
    descrip. : PHP Client for Elasticsearch
    keywords : client, elasticsearch, search
    versions : * v7.17.1
    type     : library
    license  : Apache License 2.0 (Apache-2.0) (OSI approved) https://spdx.org/licenses/Apache-2.0.html#licenseText
    license  : GNU Lesser General Public License v2.1 only (LGPL-2.1-only) (OSI approved) https://spdx.org/licenses/LGPL-2.1-only.html#licenseText
    homepage :
    source   : [git] git@github.com:elastic/elasticsearch-php.git f1b8918f411b837ce5f6325e829a73518fd50367
    dist     : [zip] https://api.github.com/repos/elastic/elasticsearch-php/zipball/f1b8918f411b837ce5f6325e829a73518fd50367 f1b8918f411b837ce5f6325e829a73518fd50367
    path     : ~/vendor/elasticsearch/elasticsearch
    names    : elasticsearch/elasticsearch
    

    また、Elasticsearch PHP クライアントのバージョンは、環境ルートディレクトリのcomposer.lock ファイルにあります。

  5. コマンドラインから、Elasticsearch サービス接続の詳細を取得します。

    code language-bash
    vendor/bin/ece-tools env:config:show services
    

    応答で、Elasticsearch サービスエンドポイントのIP アドレスを見つけます。

    code language-none
    | elasticsearch:                                                                                                  |
    +------------------------------------------+----------------------------------------------------------------------+
    | username                                 | null                                                                 |
    | scheme                                   | http                                                                 |
    | service                                  | elasticsearch                                                        |
    | fragment                                 | null                                                                 |
    | ip                                       | 169.254.220.11                                                       |
    | hostname                                 | dzggu33f75wi3sd24lgwtoupxm.elasticsearch.service._.magentosite.cloud |
    | public                                   | false                                                                |
    | cluster                                  | fo3qdoxtla4j4-master-7rqtwti                                         |
    | host                                     | elasticsearch.internal                                               |
    | rel                                      | elasticsearch                                                        |
    | query                                    |                                                                      |
    | path                                     | null                                                                 |
    | password                                 | null                                                                 |
    | type                                     | elasticsearch:6.5                                                    |
    | port                                     | 9200                                                                 |
    +------------------------------------------+----------------------------------------------------------------------+
    
  6. インストール済みのElasticsearch サービス version:numberをサービスエンドポイントから取得します。

    code language-bash
    curl -XGET <elasticsearch-service-endpoint-ip-address>:9200/
    
    code language-json
    {
       "name" : "-AqGi9D",
       "cluster_name" : "elasticsearch",
       "cluster_uuid" : "_yze6-ywSEW1MaAF8ZPWyQ",
       "version" : {
         "number" : "6.5.4",
         "build_flavor" : "default",
         "build_type" : "deb",
         "build_hash" : "82a8aa7",
         "build_date" : "2019-01-23T12:07:18.760675Z",
         "build_snapshot" : false,
         "lucene_version" : "7.5.0",
         "minimum_wire_compatibility_version" : "5.6.0",
         "minimum_index_compatibility_version" : "5.0.0"
    },
    "  tagline" : "You Know, for Search"
    }
    
  7. Elasticsearch サービスとPHP クライアントのバージョンの互換性を確認します。

    バージョンに互換性がない場合は、環境設定に次のいずれかの更新を行います。

    • Elasticsearch PHP クライアントを、Elasticsearch サービスのバージョンと互換性のあるバージョンに変更します。

      code language-bash
      composer require "elasticsearch/elasticsearch:~<version>"
      
    • services.yaml ファイルのElasticsearch サービスのバージョンを、Elasticsearch PHP クライアントと互換性のあるバージョンに変更します。

      [!BEGINSHADEBOX]

  • Pro プロジェクトの場合、StagingおよびProduction環境でのみ​ サービス ​をインストールまたは更新するには、Adobe Commerce サポートチケット ​を送信する必要があります。

  • 必要なサービス変更を示し、更新された.magento.app.yamlおよびservices.yaml ファイルを含め、チケットにPHP バージョンを明記します。 PHPのバージョン、拡張機能、環境設定に対するセルフサービスの変更については、アプリケーション設定​のPHP設定を参照してください。

    note important
    IMPORTANT
    新しいチケットフォームで「環境」フィールドを選択する場合は、Adobeの環境命名を使用します。 例えば、その環境​ Dev ​を内部的に呼び出す場合でも、「ステージング」を選択します。 説明に内部名を記載できますが、「環境」フィールド自体にはAdobeの命名規則を使用する必要があります。
  • 実稼動環境(Proのみ)への変更の場合、48時間以上の通知が必要です。 これにより、クラウドインフラチームはリソースを集め、安全なアップグレードを行うのに十分な時間を確保できます。 通知期間は、インフラチームがリクエストを確認し、週末を除くアップグレードをスケジュールした時点から開始されます。 例えば、月曜日にサービスのアップグレードを完了させるには、水曜日までにスケジュールされたアップグレードの確認を受け取る必要があります。 需要のピーク時には、リクエストの処理により多くの時間がかかる場合があります。

    note
    NOTE
    すべての通信で明確さと一貫性を確保するために、スケジュールされたすべてのメンテナンスウィンドウをUTC形式で提供する必要があります。 ステージング環境ではサービスのアップグレードをスケジュールできません。ほとんどの場合、ステージングのアップグレードはリクエストと同じ日に実行されます。
    RabbitMQ アップグレードをリクエストする場合は、アップグレード完了後に環境を再デプロイして、メッセージキューが再初期化されるようにしてください。
  • アップグレードのスケジュールを設定するための2部構成のハンドシェイクプロセス

    スムーズで調和のとれたアップグレードプロセスを実現するために、Adobe Commerce サポートでは、すべての実稼動環境のアップグレードに対して2部構成のハンドシェイクプロセスを実行します。

    1. お客様確認:Adobe サポートは、お客様がアップグレードの希望日時を確認することを最初にリクエストします。 このステップにより、スケジュールが顧客のビジネスニーズとメンテナンスウィンドウに合致していることを確認します。
    2. スケジュール設定と最終確認:お客様がタイミングを確認すると、Adobe サポートはインフラストラクチャチームにリクエストを送信し、その後、リクエストを確認し、スケジュールされたアップグレードウィンドウの最終確認を行います。

アップグレードは、インフラチームが最終確認を行うまでスケジュールされたとは見なされません。 お客様には、遅延を回避し、適切な通知を行うために、アップグレード期間の少なくとも48時間前に迅速に対応することが推奨されます。

Elasticsearch サービスを再起動します

Elasticsearch サービスを再起動する必要がある場合は、Adobe Commerce サポートにお問い合わせください。

追加の検索設定

  • デフォルトでは、クラウド環境の検索設定は、デプロイするたびに再生成されます。 SEARCH_CONFIGURATION デプロイ変数を使用して、デプロイ間でカスタム検索設定を保持できます。 変数のデプロイ ​を参照してください。

  • プロジェクトにElasticsearch サービスを設定した後、管理者UIを使用してElasticsearch接続をテストし、Adobe CommerceのElasticsearch設定をカスタマイズします。

Elasticsearch用プラグインの追加

オプションで、.magento/services.yaml ファイルのElasticsearch サービスにconfiguration:plugins セクションを追加することで、Elasticsearchのプラグインを追加できます。 例えば、次のコードでは、ICU解析と音声解析プラグインを有効にします。

elasticsearch:
    type: elasticsearch:<service-version>
    disk: 1024
    configuration:
        plugins:
            - analysis-icu
            - analysis-phonetic

Elastic Suite サードパーティプラグインを使用する場合は、ece-tools パッケージ 🔗をバージョン 2002.0.19以降に更新する必要があります。
Elastic Suiteを設定する際に、設定設定をELASTICSUITE_CONFIGURATION デプロイ変数に追加します。この設定は、デプロイメント間で設定を保存します。

Elasticsearchのプラグインの削除

.magento/services.yamlelasticsearch:からプラグイン エントリを削除しても、期待どおりにアンインストールも無効化もされません。 Elasticsearch データを再インデックスする必要があります。 この動作は、これらのプラグインに依存するデータの損失や破損を防ぐことを目的としています。

Elasticsearch プラグインを削除するには:

  1. .magento/services.yaml ファイルからElasticsearch プラグインのエントリを削除します。

  2. コード変更を追加、コミット、プッシュします。

    code language-bash
    git add .magento/services.yaml
    
    code language-bash
    git commit -m "Remove Elasticsearch plugin"
    
    code language-bash
    git push origin <branch-name>
    
  3. Cloud リポジトリに.magento/services.yamlの変更をコミットします。

  4. カタログ検索インデックスのインデックスを再作成します。

    code language-bash
    bin/magento indexer:reindex catalogsearch_fulltext
    
  5. キャッシュをクリーニングします。

    code language-bash
    bin/magento cache:clean
    
TIP
Adobe CommerceでのElastic Suite プラグインの使用またはトラブルシューティングについて詳しくは、Elastic Suite ドキュメント ​を参照してください。
recommendation-more-help
commerce-on-cloud-help-cloud-guide