OpenSearch in Shopware einrichten
Ab einer gewissen Kataloggröße wird die MySQL-Standardsuche von Shopware zäh — OpenSearch übernimmt dann Produktsuche, Listings und Filter. Die Anbindung bringt Shopware 6 von Haus aus mit: ein paar Umgebungsvariablen, eine Indexierung, fertig. Dieser Artikel zeigt die Einrichtung auf unseren Servern.
Voraussetzungen
Abschnitt betitelt „Voraussetzungen“- Eine laufende OpenSearch-Instanz. Zwei Wege bei uns: selbst betrieben als Container auf deinem Server (gut für Staging und kleinere Kataloge) oder als Managed OpenSearch — dediziert, überwacht, mit Updates von uns. Die Einrichtung in Shopware ist in beiden Fällen identisch, nur die Adresse unterscheidet sich.
- SSH-Zugang mit Zugriff auf
bin/console— siehe SSH-Zugang einrichten. - Laufende Queue-Worker (
messenger:consume): Die Indexierung läuft über die Message Queue — ohne Worker passiert nach dem Startbefehl schlicht nichts.
Schritt für Schritt
Abschnitt betitelt „Schritt für Schritt“- Prüfe die Verbindung zur Suchinstanz — vom Shopware-Server aus:
Kommt JSON mit der Versions-Info zurück, steht die Verbindung. (Adresse und Port bei Managed OpenSearch entsprechend der Zugangsdaten aus dem Ticket.)
Terminal-Fenster curl http://127.0.0.1:9200 - Ergänze die
.env(bzw..env.local) im Shopware-Verzeichnis:Terminal-Fenster OPENSEARCH_URL=http://127.0.0.1:9200SHOPWARE_ES_ENABLED=1SHOPWARE_ES_INDEXING_ENABLED=1SHOPWARE_ES_INDEX_PREFIX=swSHOPWARE_ES_THROW_EXCEPTION=1SHOPWARE_ES_THROW_EXCEPTION=1lässt Fehler während der Einrichtung sichtbar auffliegen, statt leise auf MySQL zurückzufallen — nach erfolgreichem Umstieg auf0setzen, dann bleibt der Shop bei einem Suchausfall benutzbar. - Nur bei Single-Node-Instanzen (das Container-Setup ist eine): Lege
config/packages/elasticsearch.ymlan, sonst wartet der Index ewig auf Replikate Replikat: Kopie eines Index auf einem weiteren Knoten. Auf einem einzelnen Knoten kann sie nie zugewiesen werden — der Cluster-Status bleibt dauerhaft yellow. , die es nie geben wird:elasticsearch:index_settings:number_of_shards: 1number_of_replicas: 0 - Leere den Cache, damit die neuen Variablen greifen:
Terminal-Fenster bin/console cache:clear - Stoße die Indexierung an:
Der Befehl legt nur Aufträge in die Queue — die eigentliche Arbeit erledigen die Worker im Hintergrund. Je nach Kataloggröße dauert das von Minuten bis zu einer Stunde.
Terminal-Fenster bin/console es:index - Prüfe das Ergebnis, sobald die Queue leer ist:
Deine
Terminal-Fenster curl "http://127.0.0.1:9200/_cat/indices?v"sw_…-Indizes müssen den Statusgreenund plausible Dokument-Zahlen zeigen. Fehlt der Alias noch, hilftbin/console es:create:aliasnach. - Teste die Storefront-Suche im Browser — Suchbegriffe, Kategorien, Filter. Ab jetzt beantwortet OpenSearch die Anfragen.
Wenn etwas schiefläuft
Abschnitt betitelt „Wenn etwas schiefläuft“es:index läuft durch, aber es passiert nichts
Abschnitt betitelt „es:index läuft durch, aber es passiert nichts“Der Befehl füllt nur die Queue — verarbeitet wird sie von den Workern. Läuft kein messenger:consume, bleibt die Indexierung liegen.
Lösung: Worker-Status prüfen und starten. Wie die Worker auf deinem Server eingerichtet sind, klärt im Zweifel ein Ticket — dauerhaft laufende Worker gehören zum Shopware-Grundsetup, nicht nur zur Suche.
No alive nodes found in your cluster oder Connection refused
Abschnitt betitelt „No alive nodes found in your cluster oder Connection refused“Shopware erreicht die OpenSearch-Instanz nicht: Dienst down, falsche Adresse in OPENSEARCH_URL oder Tippfehler beim Port.
Lösung: Erst Schritt 1 wiederholen (curl), dann die .env gegenprüfen. Der ausführliche Diagnose-Fahrplan im Artikel „No alive nodes found” beheben ist für Magento geschrieben, passt aber eins zu eins.
Der Index bleibt dauerhaft yellow
Abschnitt betitelt „Der Index bleibt dauerhaft yellow“Auf einer Single-Node-Instanz können Replikate nie zugewiesen werden — der Status wird nie green, und manche Warte-Logik läuft in Timeouts.
Lösung: Schritt 3 nachziehen (number_of_replicas: 0), dann den Index neu aufbauen: bin/console es:index und den Queue-Durchlauf abwarten.
Neue oder geänderte Produkte tauchen in der Suche nicht auf
Abschnitt betitelt „Neue oder geänderte Produkte tauchen in der Suche nicht auf“Entweder ist SHOPWARE_ES_INDEXING_ENABLED auf 0 (Lese-Betrieb), oder die Update-Aufträge stauen sich in der Queue.
Lösung: Variable prüfen, Worker prüfen. Für den Komplett-Neuaufbau aller Indizes: bin/console dal:refresh:index --use-queue. Danach Shopware-Cache leeren, damit Listings nicht aus dem HTTP-Cache kommen.
Verwandte Artikel
Abschnitt betitelt „Verwandte Artikel“- OpenSearch im Container für die Shop-Suche — der Unterbau, wenn du die Instanz selbst betreibst.
- „No alive nodes found” beheben — die Verbindungs-Diagnose zwischen Shop und Suche.
- Shopware-Cache leeren — nach Index-Neuaufbauten der zweite Handgriff.
Du kommst nicht weiter?
Abschnitt betitelt „Du kommst nicht weiter?“Indexierung hängt, Suche liefert Unsinn oder unsicher, ob Container oder Managed OpenSearch zu deinem Katalog passt? Ticket im Kundencenter öffnen — nenn Shop-Domain und Shopware-Version, wir schauen gemeinsam drauf.