詳細については、Magento 2.3 Elasticsearch 7 をご覧ください。
Magentoは、eコマースウェブサイトに使用されるオープンソースのフレームワークです。複数のサポート拡張機能とアドオンが利用可能で、優れたeコマース体験を提供するため、非常に人気があります。その中の一つがElasticSearchです。名前が示すように、これはカタログから異なる製品を検索するための検索拡張機能です。以前はMySQL検索エンジンを使用していましたが、完全なテキスト検索に優れておらず、パフォーマンスの問題がありましたが、ElasticSearchではそのような問題はありません。
Magento 2.3 での Elasticsearch の有効化
ElasticSearchは、複数の言語に対応し、ストップワードや同義語でも優れたパフォーマンスを発揮する高度な検索技術を使用しています。ElasticSearchはインデックスを使用して検索を行い、インデックスが更新または再生成されるまで最後に生成されたインデックスに基づいて結果を取得するため、信頼性が向上します。
ElasticSearchはリアルタイムのデータ分析もサポートしており、eコマースでの作業に便利です。検索だけでなく、完全なレポート、分析、パフォーマンスレポート、ストレージなども提供します。ElasticSearchは非常に正確で、大規模にスケーラブルです。
Magento 2.3.1 は Elasticsearch 6.x をサポートし、デフォルトで有効になっています。Magento は依然として Elasticsearch 2.x および 5.x のモジュールを提供していますが、これらのバージョンを使用するには有効にする必要があります。Elasticsearch 2.x はまだ利用可能ですが、強く非推奨です。2.x および 5.x バージョンは End of Life です。Magento 2.3.1 で Elasticsearch 2.x または 5.x を実行する必要がある場合は、Elasticsearch クライアントを以前のバージョンにダウングレードする必要があります。Elasticsearch クライアントを変更する手順に従ってください。
Magento 2 で Elasticsearch を設定する方法
カタログ検索ソリューションとして Elasticsearch を使用することにより、次の利点があります:
- カタログ内の製品に対する迅速かつ高度な検索
- 複数の言語に対応
- ストップワードと同義語のサポート
- 再インデックスが完了するまでインデックスは顧客に影響しない
Elasticsearch は、最後に生成されたインデックスに基づいて検索結果を返し、新しいインデックスが完全にインデックスされるまで顧客への影響はありません。
- 正確で高性能かつスケーラブル
- すぐに使える
- 水平スケーリングが容易
- リアルタイムのデータと分析をサポート
- ドキュメント指向のデータストアとして使用可能
- 検索を超えたフレームワークのアプリケーション、レポート作成、パーソナライズ、パフォーマンス、ストレージを含む
Elasticsearch 6.x のインストール
- ルート権限を持つユーザーとして Magento サーバーにログインします。
- CentOS: Elasticsearch RPM ドキュメントを使用して Elasticsearch 6.x をインストールします
- Ubuntu: Elasticsearch Ubuntu ドキュメントを使用して Elasticsearch 6.x をインストールします
- 必要に応じて Elasticsearch を設定します。詳細については Elasticsearch の設定を参照してください。
- まだ実行していない場合は、Elasticsearch を開始します:
sudo service elasticsearch start
Elasticsearch が動作していることを確認するために、実行しているサーバーで次のコマンドを入力します:
curl -XGET ‘<host>:9200/_cat/health?v&pretty’
Magento 2 Elasticsearch の設定
- 管理者としてMagento Adminにログインします。
- ストア > 設定 > 構成 > カタログ > カタログ検索 の順にクリックします。
- 検索エンジン リストから、Elasticsearch のバージョンを選択します。
- Elasticsearch サーバーが稼働していることを確認してください。
- Elasticsearch サーバーが Magento と異なるホストにある場合、Magento サーバーにログインして Elasticsearch ホストに ping を実行します。ネットワーク接続の問題を解決し、接続を再テストします。
- Elasticsearch を起動したコマンドウィンドウでスタックトレースと例外を確認します。これらを解決する必要があります。特に、Elasticsearch を
root
権限を持つユーザーとして起動したことを確認してください。 - UNIX ファイアウォールと SELinux が無効であること、または Elasticsearch と Magento が相互に通信できるようにルールが設定されていることを確認してください。
- Elasticsearch サーバーのホスト名 フィールドの値を確認します。サーバーが利用可能であることを確認してください。サーバーの IP アドレスを試すこともできます。
netstat -an | grep **listen-port**
コマンドを使用して、Elasticsearch サーバーポート フィールドで指定されたポートが他のプロセスによって使用されていないことを確認します。
管理者を使用してキャッシュをリフレッシュする方法:
- Admin で、システム > キャッシュ管理 をクリックします。
- ページキャッシュ の横のチェックボックスを選択します。
- 右上の アクション リストから リフレッシュ をクリックします。
- コマンドラインを使用してキャッシュをクリーニングするには、
magento cache:clean
コマンドを使用します。
Magento 2 Elasticsearch の結果がない
Magento 2.3.1 は Elasticsearch 6.x をサポートし、デフォルトで有効になっています。Magento は依然として Elasticsearch 2.x および 5.x のモジュールを提供していますが、これらのバージョンを使用するには有効にする必要があります。Elasticsearch 2.x はまだ利用可能ですが、強く非推奨です。
Magento 内での Elasticsearch の設定
Magento を Elasticsearch を使用するように設定するには:
- 管理者として Magento Admin にログインします。
- ストア > 設定 > 構成 > カタログ > カタログ検索 の順にクリックします。
- 検索エンジン リストから正しい Elasticsearch バージョンを選択します。次の図を参照してください。(Elasticsearch 5.0+/6.0+ のオプションは Magento 2.1 では利用できません。)
次の表は、Magento で接続を設定およびテストするために必要な構成オプションを示しています。Elasticsearch サーバー設定を変更していない限り、デフォルト設定が機能します。次のステップに進んでください。
オプション | 説明 |
---|---|
Elasticsearch サーバーのホスト名 | Elasticsearch を実行しているマシンの完全修飾ホスト名または IP アドレスを入力します。Magento Commerce Cloud:この値は統合システムから取得します。 |
Elasticsearch サーバーポート | Elasticsearch Web サーバープロキシポートを入力します。この例ではポートは 8080 ですが、セキュアプロキシを使用している場合は通常 443 です。Magento Commerce Cloud:この値は統合システムから取得します。 |
Elasticsearch インデックスプレフィックス | Elasticsearch インデックスプレフィックスを入力します。複数の Magento インストール(ステージングおよびプロダクション環境)に単一の Elasticsearch インスタンスを使用する場合、各インストールに対して一意のプレフィックスを指定する必要があります。そうでなければ、デフォルトのプレフィックス magento2 を使用できます。 |
Elasticsearch HTTP 認証の有効化 | Elasticsearch サーバーの認証を有効にした場合は はい をクリックします。認証を有効にした場合は、指定されたフィールドにユーザー名とパスワードを入力します。 |
- 接続テスト をクリックします。
次のいずれかが表示されます:
続行するには:
または次のように表示されます:
その場合は、以下を試してください:
- Elasticsearchサーバーが実行中であることを確認してください。
- ElasticsearchサーバーがMagentoとは別のホストにある場合、MagentoサーバーにログインしてElasticsearchホストにpingを送ります。ネットワーク接続の問題を解決し、再度接続をテストします。
- Elasticsearchを開始したコマンドウィンドウでスタックトレースや例外を調べます。続行する前にそれらを解決する必要があります。特に、Elasticsearchを
root
権限を持つユーザーとして開始したことを確認してください。 - UNIXファイアウォールとSELinuxが無効になっているか、ElasticsearchとMagentoが相互に通信できるようにルールが設定されていることを確認します。
- Elasticsearchサーバーホスト名フィールドの値を確認します。サーバーが利用可能であることを確認します。サーバーのIPアドレスを試してみることもできます。
netstat -an | grep **listen-port**
コマンドを使用して、Elasticsearchサーバーポートフィールドに指定されているポートが他のプロセスによって使用されていないことを確認します。
例えば、Elasticsearchがデフォルトのポートで実行されているかどうかを確認するには、次のコマンドを使用します:
netstat -an | grep 9200 |
Elasticsearchがポート9200で実行されている場合、次のように表示されます: tcp 0 0 :::9200 :::* LISTEN
MagentoのElasticsearch設定を変更した後、管理者またはコマンドラインを使用してカタログ検索インデックスを再インデックス化し、フルページキャッシュを更新する必要があります。
コマンドラインを使用して再インデックス化するには:
- Magentoファイルシステム所有者として、またはMagentoファイルシステム所有者に切り替えてMagentoサーバーにログインします。
- 次のいずれかのコマンドを入力します:
カタログ検索インデックスのみを再インデックス化するには、次のコマンドを入力します:
bin/magento indexer:reindex catalogsearch_fulltext |
すべてのインデックスを再インデックス化するには、次のコマンドを入力します:
bin/magento indexer:reindex |
Magento 2.3 Elasticsearchインデックスリスト
Magento Imagineで大きな発表がありました。この発表は、ElasticsearchサポートがMagentoのオープンソース版に移行され、2.3.0リリースで提供されることを示していました。
Magento 2.3のリリースには新しいアップデートがありました。それは、ElasticSearchとの統合です。ここで知っておくべきことは、再インデックス化が完了するまで、インデックスは顧客に大きな影響を与えないことです。
すでにElasticSearchが非常に強力な検索エンジンであることをご存知の方も多いかもしれません。検索のパフォーマンスを向上させるだけでなく、表示されるリストのサイズも減少させます。
検索エンジンリストから適切なElasticSearchバージョンを選択し、ElasticSearchインデックスプレフィックスを入力できます。これにより、Magento 2.3 ElasticSearchインデックスリストを識別できます。今こそMagento 2.3にストアをアップデートする時です。
Magento 2.3 Elasticsearchワイルドカードクエリ
Magentoは非常に強力で高精度に動作するElasticSearchを使用しています。ElasticSearchにはシンプルな検索やワイルドカード検索など、複数の検索オプションがあります。これらの検索オプションにより、ストアの顧客は製品をより簡単に見つけることができます。
そのためには、次のような手順を実行します:
- ElasticSearchインデックスの設定。ストアのインデックスを作成します。
- 次に、ワイルドカード検索を設定します。
これで、Magento 2.3ストアに検索機能を追加できます。ElasticSearchのワイルドカード検索機能を利用することも可能です。たとえば、製品の一部の名前を検索することができます。
このようにして、ElasticSearchはMagentoに非常に適しています。
Magentoストアの検索機能を強化するために、ElasticSearchインデックスを使用することができます。
これらの手順を実行することで、ElasticSearchインデックスリストを設定できます。これにより、製品検索がはるかに簡単になります。
Magento 2.3 Elasticsearch再インデックス化の完了
Magento 2.3でElasticSearchを利用する場合、再インデックス化は重要なステップです。再インデックス化の完了により、製品検索の精度が向上します。インデックス化の完了後、すぐに顧客に反映されます。
Magento 2.3での再インデックス化の手順は非常に簡単です。
- コマンドラインを使用して、
bin/magento indexer:reindex
コマンドを実行します。 - インデックス化が完了するのを待ちます。
- 再インデックス化が完了したら、ElasticSearchインデックスの一覧が表示されます。
これにより、再インデックス化の手順が完了します。
SolrとElasticsearchは、どちらも広く使用されている検索エンジンです。ここでは、Magento 2のElasticsearchとSolrの総所有コスト、機能、性能の詳細な比較をご紹介します。
SolrとElasticsearchは基本的には姉妹のようなもので、どちらも非常に似ていますが、Solrの方が古いです。どちらもコア検索ライブラリであるLuceneの上に構築されたレイヤーです。
最初に重要な決定をするべきでしょうか?後で簡単に切り替えられますか?それは重要な決定であり、一方を他方に置き換えるのは容易ではありません。すぐにわかるように、どちらも特定の問題に対して他方より優れていることが証明されています。したがって、正しい選択をするためには、自分の具体的なニーズを理解することが重要です。これは主に一度決める選択なので、使用ケースをじっくり分析することをお勧めします。
セットアップの容易さを重視しますか、それとも関連性の調整能力を重視しますか?セットアップの容易さを重視するなら、Elasticsearchを選びましょう。それはセットアップが非常に速く、初めての段階で適切なスタートを切ることができます。
検索ランキング(または関連性)を完全にコントロールしたい上級プレイヤーであれば、Solrを選ぶべきです。それがElasticsearchよりも優れた結果を提供するわけではありませんが、ランキングに関して自分が求めるものを作り出すためのコントロールを多く提供します。
eCommerce製品やPDFのようなドキュメント、ウェブサイト、音楽などのクライアント向けの検索を行いたい場合、Solrを選ぶ方が良いでしょう。セットアップに時間がかかるかもしれませんが、将来的に改善できない検索に縛られることはありません。
しかし、Magentoストアの検索を設定する場合、Magento 2のElasticsearchとSolrの比較を考えるのは過剰です。開発コストを最小限に抑えるために、カスタム検索拡張機能を使用することをお勧めします。
さらに詳しく知りたい場合は、こちらのSolr vs Elasticsearchの詳細記事をお読みください。
Magento 2 Elasticsearchの代替案
Elasticsearchは完全なソリューションではありません。Elasticsearchから検索インターフェースを構築することは困難です。そのため、このソリューションに飛び込むのはお勧めできません。Elasticsearchクラスタを正常にスケールさせ、シームレスに機能させるためには専門知識が必要です。
Magentoは多くのプラグインがあり、ストアに機能を追加することができます。Magento 2では、ExpertRecサイト検索拡張機能をマーケットプレイスからインストールするだけで済みます。これによりデフォルトの検索が自動的に置き換えられ、ファセットが組み込まれたMagento 2のカスタム高度検索バーが追加されます。このプラグインに付属するExpertRecダッシュボードでさらにカスタマイズすることができます。これにより、ウェブサイトにより強力でカスタマイズ可能な検索エンジンが追加されます。このMagento 2の高度検索拡張機能はAjax機能で開発されています。オンライン検索のためのすべての高度な技術を組み合わせています。検索結果は、検索ボックスにキーワードの最初の文字を入力するとドロップダウンリストとして表示されます。
欠点:
- Elasticsearchと違って有料です。
- クラウド上にホストされているため、機密データを検索する場合には使用できません(Googleカスタム検索と同様)。
利点:
- 迅速な統合が可能で、5分以内に動作する検索を得ることができます。
- ターンキーソリューションであるため、使用するのに開発者の手を借りる必要はありません。
- PDFやWordなど、複数のファイルタイプをサポートしています。