Schnelle Suche für große Kataloge: So binden Sie Elasticsearch oder OpenSearch an Shopware 6 an, von der Installation über die Konfiguration bis zu Indexierung, Test und Betrieb.
Suchgeschwindigkeit und Trefferqualität entscheiden im Onlinehandel über Zufriedenheit und Conversion. Shopware 6 bringt dafür eine Anbindung an Elasticsearch und OpenSearch mit: verteilte Suchmaschinen, die große Kataloge in Millisekunden durchsuchen, Filter und Facetten berechnen und Vorschläge während der Eingabe liefern.
Die Standardsuche von Shopware arbeitet auf der MySQL-Datenbank. Das reicht für kleine Sortimente, wird bei zehntausenden Artikeln, vielen Eigenschaften und hohem Traffic aber langsam. Elasticsearch oder OpenSearch übernehmen dann Produktsuche, Listing und Filterung in Storefront und Store-API.
Dieser Beitrag beschreibt Voraussetzungen, Installation, Konfiguration, Indexierung, Test und Betrieb. Grundlagen zur Plattform finden Sie auf unserer Seite zur Shopware-Entwicklung.
Elasticsearch ist eine verteilte Such- und Analyse-Engine auf Basis der Lucene-Bibliothek. Sie indexiert Dokumente, beantwortet Volltext- und strukturierte Abfragen mit geringer Latenz und skaliert über mehrere Knoten. Entwickelt wurde sie von Elastic.
Nach der Lizenzänderung von Elastic im Jahr 2021 hat Amazon Web Services mit OpenSearch einen Fork von Elasticsearch und Kibana veröffentlicht. OpenSearch steht unter der Apache-2.0-Lizenz, wird von einer Community weiterentwickelt und bleibt bei den wichtigsten APIs kompatibel. Shopware unterstützt beide Systeme und empfiehlt für neue Installationen OpenSearch.
Ist die Anbindung aktiv, laufen Produktsuche, Kategorielistings und Filter über den Suchindex statt über SQL. Die Administration kann zusätzlich eine eigene Admin-Suche auf Basis der Engine nutzen. Welcher Weg sich lohnt, hängt von Katalog, Traffic und Hosting ab; unsere Übersicht zum Shopware-Hosting hilft bei der Einordnung.
# Paket herunterladen (Version anpassen)
wget https://artifacts.opensearch.org/releases/bundle/opensearch/2.19.0/opensearch-2.19.0-linux-x64.deb
# Installieren, seit OpenSearch 2.12 mit Admin-Passwort
sudo env OPENSEARCH_INITIAL_ADMIN_PASSWORD=IhrSicheresPasswort dpkg -i opensearch-2.19.0-linux-x64.deb
# Dienst starten und beim Booten aktivieren
sudo systemctl enable --now opensearch
# Erreichbarkeit prüfen
curl -k -u admin:IhrSicheresPasswort https://localhost:9200/
Für Elasticsearch verläuft die Installation analog mit dem Elastic-Paket und dem Dienst elasticsearch. In Entwicklungsumgebungen ist ein Docker-Container am schnellsten eingerichtet. In Produktion sollten Sie Heap-Größe (etwa die Hälfte des verfügbaren RAM, maximal 31 GB), Speicherpfade und Zugangsdaten in der Konfiguration anpassen.
Die Anbindung wird nicht in der Administration, sondern über Umgebungsvariablen in der .env bzw. .env.local gesteuert:
SHOPWARE_ES_ENABLED=1
SHOPWARE_ES_HOSTS=https://benutzer:passwort@localhost:9200
SHOPWARE_ES_INDEXING_ENABLED=1
SHOPWARE_ES_INDEX_PREFIX=sw
SHOPWARE_ES_THROW_EXCEPTION=0
Die Variablen bedeuten: SHOPWARE_ES_ENABLED schaltet die Suche über die Engine ein, SHOPWARE_ES_INDEXING_ENABLED erlaubt das Schreiben in den Index, SHOPWARE_ES_INDEX_PREFIX trennt mehrere Shops auf einem Cluster, und SHOPWARE_ES_THROW_EXCEPTION entscheidet, ob bei einem Ausfall ein Fehler erscheint (1) oder Shopware still auf die Datenbanksuche zurückfällt (0).
bin/console cache:clear
bin/console es:index
bin/console es:create:alias
bin/console es:status
Beim ersten Lauf empfiehlt sich diese Reihenfolge: Indexierung einschalten, die Suche aber noch ausgeschaltet lassen, Index aufbauen, dann SHOPWARE_ES_ENABLED=1 setzen und den Cache leeren. So bleibt der Shop während der Indexierung erreichbar. Die Indexierung läuft über die Message Queue, der Worker muss also laufen. Mit bin/console dal:refresh:index stoßen Sie später eine vollständige Neuindexierung an.
Mit SHOPWARE_ADMIN_ES_ENABLED=1 und SHOPWARE_ADMIN_ES_INDEXING_ENABLED=1 nutzt auch die Suche in der Administration die Engine. Den Index dafür bauen Sie mit bin/console es:admin:index auf.
curl -k -u benutzer:passwort https://localhost:9200/_cluster/health sollte green oder yellow melden (bei einem einzelnen Knoten ist gelb normal).bin/console es:status zeigt Indizes, Alias und Dokumentzahl. Die Anzahl der Produkte sollte zum Katalog passen.var/log/prod.log) und die Logs der Suchmaschine auf Fehler durchsehen.SHOPWARE_ES_HOSTS prüfen; bei selbstsignierten Zertifikaten die CA hinterlegen.bin/console es:reset lässt sich ein beschädigter Index neu aufbauen.es:status), Cache leeren, kontrollieren, ob SHOPWARE_ES_ENABLED wirklich auf 1 steht.Kann ich Elasticsearch und OpenSearch beliebig austauschen?
Grundsätzlich ja, Shopware spricht beide über dieselbe Konfiguration an. Prüfen Sie aber die unterstützten Versionen in den Release Notes Ihrer Shopware-Version.
Mein Hoster bietet keine Suchmaschine an. Was nun?
Nutzen Sie einen Managed Service wie Amazon OpenSearch Service oder Elastic Cloud, oder bleiben Sie bei der Datenbanksuche, bis der Katalog es erfordert. Welche Optionen es gibt, zeigt unser Beitrag zum Shopware-Hosting.
Wie oft muss ich neu indexieren?
Shopware aktualisiert den Index bei Änderungen automatisch über den Worker. Eine vollständige Neuindexierung ist nach Shopware-Updates, Änderungen an Eigenschaften oder an der Index-Konfiguration sinnvoll.
Kann ich die Gewichtung der Treffer anpassen?
Ja. Die Gewichtung der Suchfelder stellen Sie in der Administration unter Einstellungen → Suche ein, weitergehende Boosting-Regeln lassen sich über ein Plugin ergänzen. Wie so etwas entsteht, lesen Sie auf unserer Seite zur Shopware-Plugin-Entwicklung.
Sie möchten wissen, ob sich der Umstieg für Ihren Shop lohnt? Unsere Shop-Analyse prüft Suche, Performance und Conversion.