Shopware 5.5.8 mit Elasticsearch 6.8

Hallo Community, 

ich hab etwas Sorgen mit einem Shop, welcher eigentlich auch nach Upgrade von ES 5.6 auf ES 6.8 laut den Anforderungen einwandfrei funktionieren sollte.

Trotz eines kompletten cleanup und löschen und Neuinstallation von ES 6 inkl Daten(/var/lib/elasticsearch) lächelt mich in der core_production Log sowie im ES Log ein

core.CRITICAL: illegal_argument_exception: Can't parse boolean value (1), expected (true) or (false) []

an.

Ein entfernen von ES 6 und erneutes installieren von ES 5 behebt das Problem.

Re-Index etc pp alles durchgeführt.

Jemand eine Idee was hier nicht klappt?

Versuche mal das dynamic Mapping zu deaktivieren: https://github.com/shopware/shopware/blob/5.6/engine/Shopware/Configs/Default.php#L172

das kannst du dann in der config.php überschreiben.

Hallo Moritz, 

das hat leider nichts gebracht, auch nach nochmaligen kompletten zurücksetzen von ES und sämtlichen anderen Caches.

Das Log zeigt nach wie vor das gleiche:

core.CRITICAL: illegal_argument_exception: Can't parse boolean value (1), expected (true) or (false) [] {"uid":"1ae70a7"}

core.ERROR: Elasticsearch\Common\Exceptions\BadRequest400Exception: {"error":{"root_cause":({"type":"illegal_argument_exception","reason":"Can't parse boolean value (1), expected (true) or (false)"}),"type":"search_phase_execution_exception","reason":"all shards failed","phase":"query","grouped":true,"failed_shards":({"shard":0,"index":"sw_shop1_product_20200317111720","node":"MXxNNU7uTPm8kTldJG-8Tg","reason":{"type":"illegal_argument_exception","reason":"Can't parse boolean value (1), expected (true) or (false)"}}),"caused_by":{"type":"illegal_argument_exception","reason":"Can't parse boolean value (1), expected (true) or (false)","caused_by":{"type":"illegal_argument_exception","reason":"Can't parse boolean value (1), expected (true) or (false)"}}},"status":400} in /srv/www/www.domain.de/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Connections/Connection.php:663 Stack trace: #0 /srv/www/www.domain.de/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Connections/Connection.php(640): Elasticsearch\Connections\Connection->tryDeserializeError(Array, 'Elasticsearch\\C...') 

noch eine Idee jemand?

Der Shop hat über 500000 Produkte, ohne wird das nix und ich möchte auch nicht auf eine EOL Version 5 zurückgreifen wollen;)

Danke und bleibt alle Gesund!

Kannst du das ding mal dumpen und hier posten?

https://github.com/shopware/shopware/blob/5.6/engine/Shopware/Bundle/SearchBundleES/ProductNumberSearch.php#L87

Moin Shyim,

hier die Ausgabe:

 array(4) { ["took"]=\> int(9) ["timed\_out"]=\> bool(false) ["\_shards"]=\> array(4) { ["total"]=\> int(5) ["successful"]=\> int(5) ["skipped"]=\> int(0) ["failed"]=\> int(0) } ["hits"]=\> array(3) { ["total"]=\> int(1071) ["max\_score"]=\> NULL ["hits"]=\> array(1) { [0]=\> array(6) { ["\_index"]=\> string(31) "sw\_shop1\_product\_20200317172308" ["\_type"]=\> string(7) "product" ["\_id"]=\> string(6) "489120" ["\_score"]=\> NULL ["\_source"]=\> array(4) { ["number"]=\> string(6) "489120" ["mainVariantId"]=\> int(280) ["id"]=\> int(280) ["variantId"]=\> int(280) } ["sort"]=\> array(1) { [0]=\> int(280) } } } } }

Du hast jetzt das von Version 5.6 geschickt, wir haben aber Shopware 5.5.8, nur falls das eine Rolle spielt.

Hallo zusammen,

 

nach nun einigen Tests habe ich das Problem gefunden.

System: 

  • Shopware 5.5.x
  • Premium Plugin SwagBonusSystem Version 5.0.0 (die höchste für SW 5.5.x)
  • ElasticSearch 6

Das Plugin SwagBonusSystem bringt einen Filter “Bonus Artikel” mit, der den Fehler auf Kategorieseiten erzeugt. Das Problem wurde wohl in Pluginversion 5.1.2 behoben, aber das ist leider nur ab Shopware 5.6.x verfügbar.

Das bedeutet nun entweder den Filter deaktivieren oder die Lösung übernehmen. Meiner Ansicht nach müssten Anpassungen an folgenden Stellen die Anpassungen ausreichen (bisher ungetestet):

SwagBonusSystem\Bundle\SearchBundleES\BonusConditionHandler.php

 /\*\* \* {@inheritdoc} \*/ public function handleFilter( CriteriaPartInterface $criteriaPart, Criteria $criteria, Search $search, ShopContextInterface $context ) { $search-\>addQuery( new TermQuery(self::ES\_FIELD, 1) ); }

–> 1 muss zu true geändert werden.

 

Direkt die folgende Funktion:

/**
     * {@inheritdoc}
     */
    public function handlePostFilter(
        CriteriaPartInterface $criteriaPart,
        Criteria $criteria,
        Search $search,
        ShopContextInterface $context
    ) {
        $search->addPostFilter(new TermQuery(self::ES_FIELD, 1));
    }

–> 1 muss zu true geändert werden.

 

SwagBonusSystem\Bundle\SearchBundleES\BonusFacetHandler.php

 /\*\* \* {@inheritdoc} \*/ public function handle( CriteriaPartInterface $criteriaPart, Criteria $criteria, Search $search, ShopContextInterface $context ) { $aggregation = new ValueCountAggregation('has\_bonus'); $aggregation-\>setField(self::ES\_FIELD); $filterAgg = new FilterAggregation('has\_bonus\_filter'); $filterAgg-\>setFilter(new TermQuery(self::ES\_FIELD, 1)); $filterAgg-\>addAggregation($aggregation); $search-\>addAggregation($filterAgg); }

–> auch hier 1 zu true.

 

Also im Prinzip immer “new TermQuery(self::ES_FIELD, 1)” zu “new TermQuery(self::ES_FIELD, true)” ändern.

 

Hoffe das hilft weiter, wenn noch jemand das Problem hat.