Magento 2 Experten — Hyvä Theme, Tailwind CSS & SEO aus einer Hand ›

Indexer verstehen

02 Kapitel 2 von 4

Was Indexer im Hintergrund tun, warum Preise oder Bestand manchmal verzögert erscheinen, und wie Sie neu indexieren.

Magento speichert Produktdaten normalisiert in vielen Tabellen. Damit die Anzeige im Shop trotzdem schnell bleibt, werden diese Daten regelmäßig in vorberechnete, schlanke "Index"-Tabellen umgewandelt — diesen Vorgang übernehmen die Indexer, verwaltet unter System > Index Management bzw. bin/magento indexer:status.

index

Die wichtigsten Indexer

  • Product Price: berechnet finale Preise inkl. Preisregeln, Steuern und Kundengruppen vor.
  • Catalog Search: baut den Suchindex (bei diesem Projekt: OpenSearch).
  • Category Products / Product Categories: Zuordnung zwischen Produkten und Kategorien.
  • Stock: Bestand pro Produkt und Quelle.

Update-Modi

Jeder Indexer läuft entweder im Modus Update on Save (sofort bei jeder Änderung — gut für kleine Kataloge) oder Update by Schedule (per Cron-Job im Hintergrund — nötig bei größeren Katalogen, da sonst das Speichern eines Produkts im Backend spürbar langsam würde). Wenn eine Preis- oder Bestandsänderung im Shop nicht ankommt, ist meist ein Indexer der Übeltäter: Status unter System > Index Management prüfen, bei Bedarf bin/magento indexer:reindex ausführen oder in der Konfiguration nachsehen, ob der Cron-Job überhaupt läuft.

Weitere Indexer im Überblick

Neben den bereits genannten gibt es unter anderem den Indexer Product EAV (baut flache, attributbasierte Tabellen für schnelle Produktabfragen auf), Customer Grid (versorgt das Kundenraster im Backend mit einer performanten, denormalisierten Datenbasis) und Design Config Grid (indiziert individuelle Theme-Zuweisungen pro Store View). Auch diese Indexer erscheinen in der Tabelle unter System > Index Management und lassen sich dort genauso überwachen und steuern wie die häufig genannten Kern-Indexer.

Status-Spalten richtig lesen

Die Tabelle unter System > Index Management zeigt zu jedem Indexer zwei getrennte Informationen: die Spalte Status (Ready / Reindex Required / Processing) gibt an, ob der Index aktuell konsistent ist, während Update Required (bei "Update by Schedule"-Indexern) zusätzlich anzeigt, ob noch offene Änderungen auf den nächsten Cron-Durchlauf warten. Steht ein Indexer dauerhaft auf "Reindex Required", obwohl der Cron-Job läuft, deutet das meist auf einen Fehler im letzten Indexierungslauf hin — einen Blick in bin/log system.log bzw. exception.log lohnt sich dann.

update

Modus direkt im Backend umschalten

Der Wechsel zwischen Update on Save und Update by Schedule muss nicht zwingend über die Kommandozeile erfolgen: In der Tabelle unter System > Index Management lassen sich einzelne oder mehrere Indexer per Checkbox markieren und über das Dropdown Actions direkt auf den jeweils anderen Modus umstellen — praktisch, wenn ein Shop-Betreiber ohne SSH-Zugriff kurzfristig reagieren muss.

Gezielt neu indexieren und zurücksetzen

Statt immer alle Indexer auf einmal neu aufzubauen, lässt sich mit bin/magento indexer:reindex <indexer_id> gezielt ein einzelner Indexer aktualisieren (die verfügbaren IDs listet bin/magento indexer:info auf). Der Befehl bin/magento indexer:reset setzt einen Indexer explizit auf "invalid" zurück, ohne ihn neu zu berechnen — nützlich, um vor einem geplanten, vollständigen Neuaufbau (z. B. nach einem großen Datenimport) einen sauberen Ausgangszustand zu erzwingen.