Shopware - Einrichtung von OpenSearch

In diesem Artikel wird beschrieben, wie Sie OpenSearch zur Verbesserung Ihrer Sucherergebnisse und Performance in Shopware 6 einbinden sowie eine initiale Indexierung durchführen können.


Voraussetzungen

  • Shopware-Installation / -Server (Shopware 6.5.X oder höher)
  • OpenSearch-Server
  • Berechtigung Konfigurationsmodul Kundencenter



Vorbereitung OpenSearch-Server

Erstellen Sie ein VPC-Netzwerk und fügen Sie bei Ihrem OpenSearch-Server eine zusätzliche Netzwerkkarte mit einer IP-Adresse aus dem VPC-Netzwerk hinzu.

Öffnen Sie die OpenSearch-Server-Konfigurationsdatei opensearch.yml über das Konfigurationsmodul des Kundencenters, um die Anbindung an Shopware via VPC-Netzwerk vorzubereiten.



Ändern Sie hierfür die folgenden Einstellungen bzw. fügen Sie diese hinzu, falls noch nicht vorhanden und speichern Sie diese, damit die geänderte Konfiguration auf den Server übertragen und aktiv wird:

Standard-Einstellung neue / zusätzliche Einstellung Beschreibung
#cluster.name: my-application cluster.name: shopware Cluster-Name
#node.name: node-1 node.name: XXXXX Servername
-\n(nicht im Standard vorhanden) http.bind_host: ["127.0.0.1", "10.20.0.X"] IP-Adressen, auf die der OpenSearch-Server den Dienst bereitstellt. In diesem Fall wird der Dienst ausschließlich lokal auf dem Server und für die VPC-IP-Adresse bereitgestellt.
#cluster.initial_cluster_manager_nodes: ["node-1", "node-2"] cluster.initial_cluster_manager_nodes: ["XXXXX.creolineserver.com"] Cluster-Nodes
plugins.security.ssl.http.enabled: true plugins.security.ssl.http.enabled: false Erzwungenes SSL/TLS für die REST-API deaktivieren. Bei der Verwendung unserer OpenSearch-Vorinstallation, ist diese Option bereits vorkonfiguriert.
-(nicht im Standard vorhanden) plugins.security.ssl_only: false Deaktiviert generell erzwungenes SSL/TLS.Bei der Verwendung unserer OpenSearch-Vorinstallation, ist diese Option bereits vorkonfiguriert.



Konfiguration Shopware-Frontend

Um OpenSearch an Shopware anzubinden, müssen Sie zunächst die folgenden Verbindungsinformationen und allgemeinen Einstellungen in der .env.local Konfigurationsdatei Ihrer Shopware-Installation hinterlegen. Die Zugangsdaten können Sie dem Passwort-Tresor Ihres OpenSearch-Servers entnehmen:

OPENSEARCH_URL=http://admin:<Passwort>@10.20.0.X
SHOPWARE_ES_ENABLED="1"
SHOPWARE_ES_INDEXING_ENABLED="1"
SHOPWARE_ES_INDEX_PREFIX="<Präfixname>"


Legen Sie im nächsten Schritt die folgende Konfigurationsdatei an:

nano /var/www/vhosts/<DocumentRoot>/httpdocs/config/packages/elasticsearch.yml


Fügen Sie den folgenden Inhalt bei der Verwendung eines einzelnen OpenSearch-Servers ein:

elasticsearch:
  hosts: "%env(string:OPENSEARCH_URL)%"
  index_settings:
    number_of_shards: 1
    number_of_replicas: 0


Leeren Sie anschließend den Shopware-Cache wie folgt, damit die geänderte Konfiguration aktiv wird:

bin/console cache:clear



initiale Frontend-Indexierung durchführen

Wenn Sie bereits in der Vergangenheit OpenSearch oder Elasticsearch eingesetzt haben, empfehlen wir vor der Generierung eines neuen Indexes alle alten Indicesund dazugehörige Einstellungen, die nicht mehr benötigt werden, mit den folgenden Befehlen aus Shopware zu entfernen:

bin/console es:index:cleanup       (Alle nicht mehr verwendete Indexe entfernen)
bin/console es:reset               (Alle OpenSearch / Elasticsearch Indexe zurücksetzen)


Bauen Sie den Index anschließend vollständig neu auf:

bin/console dal:refresh:index     (Gesamten Index neu aufbauen)


Die vollständige Neu-Generierung des Indexes kann abhängig von der Anzahl der Produkte, Medien usw. sehr viel Zeit in Anspruch nehmen. Des Weiteren ist es eventuell erforderlich, das PHP Memory Limit zu erhöhen, damit der Vorgang vollständig durchgeführt werden kann.


Unter Umständen müssen noch Aliase generiert werden, falls bestimmte Produkte nicht gefunden werden:

 bin/console es:create:alias


Bei dem Einsatz diverser Plugins, die u.U. die Suche in Shopware beeinflussen, Custom-Fields o. ä. für Produkte einrichten uvm. müssen durch Sie eventuell noch Anpassungen vorgenommen werden, damit die Indexierung das gewünschte Ergebnis erzielt. Abhängig von der verwendeten Shopware-Version kann es hier zu zusätzlichen Abweichungen kommen.


Konfiguration Shopware-Administration

Sie können OpenSearch auch für die Indexierung der Administration nutzen. Erweitern Sie hierfür Ihre .env.local wie folgt:

# OpenSearch Admin Configuration
ADMIN_OPENSEARCH_URL=http://admin:<Passwort>@10.20.0.X
SHOPWARE_ADMIN_ES_ENABLED=1
SHOPWARE_ADMIN_ES_REFRESH_INDICES=1
SHOPWARE_ADMIN_ES_INDEX_PREFIX="admin_test"


Leeren Sie anschließend den Shopware-Cache wie folgt, damit die geänderte Konfiguration aktiv wird:

bin/console cache:clear


initiale Administrations-Indexierung

Wenn Sie bereits in der Vergangenheit OpenSearch oder Elasticsearch eingesetzt haben, empfehlen wir vor der Generierung eines neuen Indexes alle alten Indices und dazugehörige Einstellungen, die nicht mehr benötigt werden, mit den folgenden Befehlen aus Shopware zu entfernen:

bin/console es:admin:reset               (Alle OpenSearch / Elasticsearch Indexe zurücksetzen)


Bauen Sie den Index anschließend vollständig neu auf:

bin/console es:admin:index     (Index für die Administration erstellen)


Die vollständige Neu-Generierung des Indexes kann abhängig von der Anzahl der Produkte, Medien usw. sehr viel Zeit in Anspruch nehmen. Des Weiteren ist es eventuell erforderlich, das PHP Memory Limit zu erhöhen, damit der Vorgang vollständig durchgeführt werden kann.


Bitte beachten Sie außerdem, dass der Einsatz von Plugins oder individueller Sucheinstellungen die tatsächlichen Ergebnisse stark beeinflussen können. Abhängig von der verwendeten Shopware-Version kann es hier zu zusätzlichen Abweichungen kommen.