Ursache
Standardmäßig können in der mehrschichtigen Navigation nur bestimmte Arten von Produktattributen verwendet werden. Sie sind Ja/Nein, Dropdown, Mehrfachauswahl und Preis. Aus diesem Grund können Sie in der Commerce Admin kein Attribut eines anderen Typs als Verwenden in mehrschichtiger Navigation = Filterbar oder Verwenden in Suchergebnissen - mehrschichtige Navigation = Ja festlegen. Es gibt jedoch eine technische Möglichkeit, diese Einschränkung zu umgehen, indem die is_filterable
- und is_filterable_in_search
in der Datenbank direkt geändert werden. Wenn dies eintritt und ein anderer Attributtyp wie Datum, Text usw. für die Verwendung in der mehrschichtigen Navigation festgelegt ist, löst Elasticsearch 5 eine Ausnahme aus.
Um dies sicherzustellen, müssen Sie herausfinden, ob es andere Attribute als Dropdown, Multipleselect und Price gibt, die für die Verwendung in der mehrschichtigen Navigation festgelegt sind. Führen Sie die folgende Abfrage aus, um nach diesen Attributen zu suchen:
SELECT ea.attribute_code, ea.frontend_input, cea.is_filterable, cea.is_filterable_in_search FROM eav_attribute AS ea
-> INNER JOIN catalog_eav_attribute AS cea ON ea.attribute_id = cea.`attribute_id`
-> WHERE (is_filterable = 1 OR is_filterable_in_search = 1) AND frontend_input NOT IN ('boolean', 'multiselect', 'select', 'price');
Das Ergebnis enthält eine Liste von Attributen, die für die mehrschichtige Navigation verwendet werden und deren Typ dies nicht zulässt. Führen Sie die im folgenden Abschnitt beschriebenen Schritte aus, um dieses Problem zu beheben.
Lösung
Um das Problem zu beheben, müssen Sie is_filterable
(d. h. in der mehrschichtigen Navigation verwendet) und filterable_in_search
(d. h. in den Suchergebnissen der mehrschichtigen Navigation verwendet) auf „0“ (nicht verwendet) festlegen. Gehen Sie dazu wie folgt vor:
-
Erstellen Sie eine Datenbanksicherung.
-
Verwenden Sie ein Datenbank-Tool wie phpMyAdmin oder greifen Sie manuell über die Befehlszeile auf die Datenbank zu, um die folgende SQL-Abfrage auszuführen:
UPDATE catalog_eav_attribute AS cea INNER JOIN eav_attribute AS ea ON ea.attribute_id = cea.attribute_id SET cea.is_filterable = 0, cea.is_filterable_in_search = 0 WHERE (cea.is_filterable = 1 OR cea.is_filterable_in_search = 1) AND frontend_input NOT IN ('boolean', 'multiselect', 'select', 'price');
-
Führen Sie die vollständige Neuindizierung der Katalogsuche mit dem folgenden Befehl aus:
bin/magento indexer:reindex catalogsearch_fulltext
-
Cache durch Ausführen von bereinigen
bin/magento cache:clean
oder in der Commerce Admin unter System > Tools > Cache-Verwaltung.
Jetzt sollten Sie in der Lage sein, ohne Probleme Katalogsuchen durchzuführen.