Magento 2 verlässt sich auf eine Suchmaschine für die Katalogsuche und in den meisten Setups für die schichtweise Navigation auf Kategorieseiten. Neuere Magento 2.4-Versionen verwenden OpenSearch (ältere Versionen verwenden Elasticsearch). Wenn die Suchmaschine ein Problem hat, reichen die Symptome von leeren Suchergebnissen bis hin zu Kategorieseiten ohne Produkte und fehlgeschlagenen Reindizes.
Dieser Leitfaden behandelt die häufigsten Fehler und wie man sie behebt.
Erste Überprüfungen
Läuft die Suchmaschine und ist sie gesund?
curl -s http://localhost:9200
curl -s http://localhost:9200/_cluster/health?pretty
curl -s http://localhost:9200/_cat/indices?v
- grün: alles gut
- gelb: Replikate nicht zugewiesen. Normal in einer Ein-Knoten-Konfiguration, wenn Indizes Replikate haben
- rot: Primärdaten fehlen, benötigt Aufmerksamkeit
Welchen Engine und Host verwendet Magento?
bin/magento config:show catalog/search/engine
bin/magento config:show catalog/search/opensearch_server_hostname
bin/magento config:show catalog/search/opensearch_server_port
(Für Elasticsearch verwenden die Pfade elasticsearch7_ anstelle von opensearch_.)
Fehler: „Konnte eine Verbindung nicht validieren“ / „Keine aktiven Knoten in Ihrem Cluster gefunden“
Magento kann die Suchmaschine nicht erreichen.
Ursachen und Lösungen:
- Service gestoppt:
sudo systemctl status opensearchund überprüfen Sie die Protokolle. Oft wurde es wegen Speichermangels beendet. - Falscher Host oder Port in der Magento-Konfiguration: beheben mit
bin/magento config:set catalog/search/opensearch_server_hostname localhost - Authentifizierung aktiviert in OpenSearch (Sicherheitsplugin), aber nicht in Magento konfiguriert: Setzen Sie den Benutzernamen und das Passwort in der Suchkonfiguration oder konfigurieren Sie die Suchmaschine entsprechend.
- HTTPS vs HTTP-Mismatch: Das Sicherheits-Plugin von OpenSearch aktiviert standardmäßig HTTPS in vielen Installationen.
- Firewall oder Docker-Netzwerk: der Hostname unterscheidet sich innerhalb der Container (zum Beispiel
opensearchanstelle vonlocalhost)
Testen Sie vom Magento-Server selbst mit curl zum konfigurierten Host und Port.
Fehler: Index schreibgeschützt / „VERBOTEN/12/index schreibgeschützt / löschen erlauben“
Die Suchmaschinenblöcke schreiben, wenn die Festplatte fast voll ist (der Flood-Stage-Disk-Wasserstand). Das Reindexieren schlägt fehl.
Beheben:
- Freier Speicherplatz (alte Protokolle, Backups, ungenutzte Indizes)
- Entfernen Sie den Block von Indizes:
curl -X PUT "http://localhost:9200/_all/_settings" -H 'Content-Type: application/json' -d '{"index.blocks.read_only_allow_delete": null}'
Neuere Versionen entfernen den Block automatisch, wenn die Speichernutzung sinkt, aber Speicherplatz freizugeben ist immer der erste Schritt.
- Reindex:
bin/magento indexer:reindex catalogsearch_fulltext
Fehler: Circuit-Breaking-Ausnahme / „Daten zu groß“
Die Suchmaschine hat nicht genügend Heap-Speicher für die Anfrage.
Beheben:
- Erhöhen Sie den JVM-Heap (in
jvm.optionsoder der UmgebungsvariableOPENSEARCH_JAVA_OPTS). Eine gängige Regel ist, den Heap bis zur Hälfte des verfügbaren RAM auf einem dedizierten Server zuzuweisen und den minimalen und maximalen Heap gleich zu halten. - Stellen Sie sicher, dass der Server insgesamt genügend RAM hat; die Suchmaschine konkurriert mit MySQL und PHP auf Single-Server-Setups.
Produkte, die auf Such- oder Kategorieseiten fehlen
Ursachen:
- Reindexierung nicht ausgeführt oder fehlgeschlagen: überprüfen Sie
bin/magento indexer:status - Produkt nicht sichtbar in der Suche (Sichtbarkeitseinstellung), deaktiviert, nicht auf Lager mit „Nicht auf Lager anzeigen“ aus, oder nicht der Website zugewiesen
- Cron läuft nicht, sodass die „Update by Schedule“ Indizes keine Änderungen verarbeiten.
Beheben:
bin/magento indexer:status
bin/magento indexer:reindex catalogsearch_fulltext
bin/magento cache:flush
Und überprüfen Sie, ob der Cron läuft (siehe das Magento 2 Befehle Spickzettel).
Fehler: „Das Ergebnisfenster ist zu groß“
Tritt bei großen Katalogen auf, wenn jemand sehr tief in die Ergebnisse blättert.
Fix: Halten Sie index.max_result_window auf einem sinnvollen Niveau und begrenzen Sie, wie tief die Paginierung im Frontend gehen kann, anstatt das Limit sehr hoch zu setzen.
Reindex ist sehr langsam
- Suchmaschine auf langsamen Festplatten oder mit zu wenig Heap
- Zu viele durchsuchbare Attribute: Überprüfen Sie, welche Attribute wirklich „In der Suche verwenden“ und „In der geschichteten Navigation verwenden“ müssen.
- Batchgrößeinstellungen und paralleles Reindexieren in neueren Magento-Versionen
- MySQL-Leistung während der Datensammelphase
Upgrade von Elasticsearch zu OpenSearch
Beim Upgrade von Magento müssen Sie möglicherweise von Elasticsearch zu OpenSearch wechseln:
- Überprüfen Sie, welche Versionen Ihre Ziel-Magento-Version unterstützt (siehe wie man Magento 2 aktualisiert)
- Installieren Sie OpenSearch neben der alten Engine auf der Staging-Umgebung
- Wechseln Sie die Magento-Konfiguration zu OpenSearch
- Führen Sie ein vollständiges Reindexing durch
- Testsuche, geschichtete Navigation und Sortierung
Überprüfen Sie auch Erweiterungen, die direkt mit Elasticsearch kommunizieren (erweiterte Suchmodule), auf die Kompatibilität mit OpenSearch.
Probleme verhindern
- Überwachen Sie die Cluster-Gesundheit, die Festplattennutzung und den Heap-Speicher
- Geben Sie der Suchmaschine dedizierten Speicher.
- Halten Sie die Speichernutzung deutlich unter den Schwellenwerten
- Protokolle rotieren
- Führen Sie regelmäßige Reindexierungsprüfungen nach Importen durch
Häufig gestellte Fragen
Kann Magento 2.4 ohne OpenSearch oder Elasticsearch betrieben werden?
Magento 2.4 benötigt eine unterstützte Suchmaschine. Die MySQL-Suche wurde in 2.4 entfernt.
Sollte die Suchmaschine auf demselben Server wie Magento laufen?
Für kleine Geschäfte kann es. Für größere Geschäfte vermeidet ein separater Server oder ein verwalteter Dienst den Wettbewerb um den Speicher und verbessert die Stabilität.
Warum ist die schichtweise Navigation nach einem Reindex leer?
Oft liegt es daran, dass das Reindexieren teilweise fehlgeschlagen ist oder die Suchmaschine währenddessen nicht erreichbar war. Überprüfen Sie die Protokolle und reindexieren Sie erneut.
Brauchen Sie Hilfe mit der Magento-Suche?
Ich behebe OpenSearch- und Elasticsearch-Probleme, optimiere die Suchleistung und kümmere mich um Magento-Upgrades. Siehe meinen Magento 2 und Hyvä-Service oder fordere Unterstützung an.