Elasticsearch 5 is geconfigureerd, maar de zoekpagina wordt niet geladen met de fout "Veldgegevens is uitgeschakeldā€¦"

Dit onderwerp beschrijft hoe te om de kwestie met Elasticsearch 5 te bevestigen, waar de onderzoekspagina niet laadt, en de uitzondering gelijkend op het volgende wordt geworpen:

{"0":"{\"error\":{\"root_cause\":[{\"type\":\"illegal_argument_exception\",\"reason\":\"Fielddata is disabled on text fields by default. Set fielddata=true on [%attribute_code%]] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory.\"}].

Betrokken versies

  • Adobe Commerce 2.2.x
  • Elasticsearch v.5
NOTE
Elasticsearch v.5 is vervangen voor Adobe Commerce 2.3.x

Probleem

Voorwaarden: Elasticsearch 5 is geconfigureerd.

Op verzoek wordt de volgende uitzondering gegenereerd in logboeken:

{"0":"{\"error\":{\"root_cause\":[{\"type\":\"illegal_argument_exception\",\"reason\":\"Fielddata is disabled on text fields by default. Set fielddata=true on [%attribute_code%]] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory.\"}].

Oorzaak

Standaard kunnen in Gelaagde navigatie alleen bepaalde typen productkenmerken worden gebruikt. Dit zijn Ja/Nee, Vervolgkeuzelijst, Vermenigvuldigen en Prijs. Daarom kunt u in Commerce Admin geen kenmerk van een ander type instellen zoals Gebruiken in gelaagde navigatie = Filterbaar of Gebruiken in gelaagde navigatie met zoekresultaten = Ja. Maar er is een technische mogelijkheid om deze beperking te omzeilen door de is_filterable en is_filterable_in_search waarden in de database. Als dit gebeurt en elk ander kenmerktype, zoals Datum, Tekst, enzovoort, is ingesteld voor gebruik in Gelaagde Navigatie, genereert Elasticsearch 5 een uitzondering.

Om ervoor te zorgen dat dit het geval is, moet u weten of er andere attributen behalve Dropdown, Multipleselect, en Prijs zijn, die worden geplaatst om in Gelaagde Navigatie te worden gebruikt. Voer de volgende query uit om naar deze kenmerken te zoeken:

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');

Het resultaat zal een lijst van attributen bevatten die voor Gelaagde Navigatie worden gebruikt, het waarvan type dit niet toestaat. Voer de in de volgende sectie beschreven stappen uit om dit te verhelpen.

Oplossing

Als u het probleem wilt verhelpen, moet u instellen is_filterable (d.w.z. gebruikt in Gelaagde Navigatie) en filterable_in_search (dat wil zeggen, wordt gebruikt in zoekresultaten Gelaagde Navigatie) naar "0" (niet gebruikt). Voer hiertoe de volgende stappen uit:

  1. Maak een back-up van de database.

  2. Een databasegereedschap gebruiken, zoals phpMyAdminU kunt de volgende SQL-query ook handmatig vanaf de opdrachtregel openen:

    code language-sql
    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');
    
  3. Voer de volledige herindex van Cataloguszoekopdrachten uit met de volgende opdracht:

    code language-bash
    bin/magento indexer:reindex catalogsearch_fulltext
    
  4. Cache opschonen door uit te voeren

    code language-bash
    bin/magento cache:clean
    

of in Commerce Admin onder Systeem > Gereedschappen > Cachebeheer.

Nu moet u cataloguszoekopdrachten zonder problemen kunnen uitvoeren.

recommendation-more-help
8bd06ef0-b3d5-4137-b74e-d7b00485808a