Elastic Search / Integration

Hallo,

ich will mich an die Elastic Search Integration wagen und bin leider mit einem Fehler gescheitert.
Die config.php habe ich angepasst:

 

In der Console habe ich die Indexe erzeugt. Was mich wundert, es kommt keine weitere Meldung. Es bleibt einfach so stehen:

 

Rufe ich nun den Shop auf, so erhalte ich folgende Meldung:

Fatal error : Uncaught exception ‚Elasticsearch\Common\Exceptions\Missing404Exception‘ with message ‚{„error“:{„root_cause“:[{„type“:„index_not_found_exception“,„reason“:„no such index“,„index“:„sw_shop1“,„resource.type“:„index_or_alias“,„resource.id“:„sw_shop1“}],„type“:„index_not_found_exception“,„reason“:„no such index“,„index“:„sw_shop1“,„resource.type“:„index_or_alias“,„resource.id“:„sw_shop1“},„status“:404}‘ in /usr/www/users/cartot/_develop/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Connections/Connection.php:519 Stack trace: #0 /usr/www/users/cartot/_develop/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Connections/Connection.php(208): Elasticsearch\Connections\Connection->process4xxError(Array, Array, Array) #1 /usr/www/users/cartot/_develop/vendor/react/promise/src/FulfilledPromise.php(25): Elasticsearch\Connections\Connection->Elasticsearch\Connections{closure}(Array) #2 /usr/www/users/cartot/_develop/vendor/guzzlehttp/ringphp/src/Future/CompletedFutureValue.php(55): React\Promise\FulfilledProm in /usr/www/users/cartot/_develop/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Connections/Connection.php on line 519

 

Da ich bis jetzt mit dem Thema noch keine Erfahrung habe, bin ich über jeden Tipp dankbar.

Shopware ist die Version SW 5.1.2 und ES 2.2.0

Vielen Dank

 

Okay, nach dem x-Versuch ist die Indexierung nun durchgelaufen. Jetzt erhalte ich keinerlei Fehlermeldung mehr und der Shop läuft relativ gut und schnell.

Was mir aber auffällt, wenn ich auf ein Hauptnavigation / Listing klicke, so habe ich ohne Elastic Search ca. 20 Filter Gruppen.

Mit aktivem Elastic Search sind es auch ca. 20 Filtergruppen. Setze ich nun einen Filter und zeige das Ergebnis an, so ist auf einmal kein Filter gesetzt und ich sehe nur noch 10 Filtergruppen.

Hat jemand eine Idee?

Es sieht so aus, als würden nicht alle Filter / Eigenschaften korrekt in ES indexiert worden sein.
Kann ich das irgendwie prüfen?

 

Hallo Herr Ott,

ich nutze auch ES bei Motogrip.

Der Index dauert lange beim schreiben auf dem Server. Daher den Indexer etwas Zeit geben! Der läuft schon weiter :wink:

Die Eigenschaften von Shopware oder die Attribute Filter?

Ich habe die config so von Shopware übernommen. Mit eckigen Klammern und nochmal außen: Läuft

Mit Curl kann man im ES Index Browsen. Den genauen Aufruf für die propertys weiß ich leider nicht.

Sind Sie sicher das ES überhaupt läuft :wink:

Wenn ich die Einbindung in der config.php Datei mit den Eckigen Klammern mache, so bekomme ich im Frontend keine Meldung. Alles sieht normal aus. Aber das System läuft nicht über ES. Wenn man z.B. den Port abändert und auch noch nicht gecachte Seite geht, kommt keine Fehlermeldung. Obwohl der Port nicht stimmt!

Binde ich es auf dem array() weg ein, so wie auch die anderen Informationen in der Dateie stehen, so bekomme ich bei einem falschen Port sofort eine Fehlermeldung.
Bitte mal bei Ihnen überprüfen/testen. Evtl. läuft es ja garnicht über ES.

 

Mein Eigenschaftenproblem bleibt bestehen. Es sind 18 normale Shopware Standard Eigenschaften Filter und 1 Attributfilter.

Ich müsste irgendwie validieren, dass die Eigenschaften korrekt indexiert wurden.

Mit Elastic HQ habe ich nun ein Tool um mir einige Dinge anzuschauen:

Man sieht ich habe einen Index und wenn ich mir die Mappings anschauen, habe ich folgende:

 

Soweit sieht alles in Ordnung aus.

Ok, wenn ich die Config mittels Array Klammern einbaue, dann funktioniert ES mit Shopware.

Es treten aber auch Probleme auf. Es werden auch nicht alle Filter in einer Kategorie angezeigt.

Alle Eigenschaften Filter werden nicht in den Kategorien angezeigt. Der Filter als solches verhält sich OK. Es fehlt nur das “Motorradmodell”.

Und ganz komisch:

In der normalen Produktsuche und einigen Kategorien erhalte die Fehlermeldung:

Fatal error: Uncaught exception 'RuntimeException' with message 'ShopwarePlugins\SwagFuzzy\Bundle\SearchBundle\KeywordFacet class not supported' in /var/www/clients/client1/web2/web/test/engine/Shopware/Bundle/SearchBundleES/ProductNumberSearch.php:159 Stack trace: #0 /var/www/clients/client1/web2/web/test/engine/Shopware/Bundle/SearchBundleES/ProductNumberSearch.php(140): Shopware\Bundle\SearchBundleES\ProductNumberSearch->getHandler(Object(ShopwarePlugins\SwagFuzzy\Bundle\SearchBundle\KeywordFacet)) #1 /var/www/clients/client1/web2/web/test/engine/Shopware/Bundle/SearchBundleES/ProductNumberSearch.php(119): Shopware\Bundle\SearchBundleES\ProductNumberSearch->addCriteriaParts(Object(Shopware\Bundle\SearchBundle\Criteria), Object(Shopware\Bundle\StoreFrontBundle\Struct\ProductContext), Object(ONGR\ElasticsearchDSL\Search), Array) #2 /var/www/clients/client1/web2/web/test/engine/Shopware/Bundle/SearchBundleES/ProductNumberSearch.php(77): Shopware\Bundle\SearchBundleES\ProductNumberSearch->buildSearch(Object(Shopware\Bundle in /var/www/clients/client1/web2/web/test/engine/Shopware/Bundle/SearchBundleES/ProductNumberSearch.php on line 159
503 Service Unavailable

Super wären, wenn sich jemand von Shopware mal einklinken könnte. Auch wenn es offiziell kein Support gibt :wink:

Kurzer Zwischenstand für ES interessierte:

Danke für euren Input!

Hat man bisher einen Mehrwert davon? Sonst warte ich mit der Einbindung und hoffe darauf das ES ohne Bugs läuft.

VG

Weniger Last auf dem Server durch heufige Suchanfragen bei viel Traffic und schnellere Suchergebnisse in AJAX Suche und normale.

Bessere Volltextsuche, definierbar

Zudem ist das Kategorielisting bei großen Kategorien schneller.

Ich bleib dran :wink:

@shopware

hab ihr noch Tipps bzgl. ES und den Eigenschaften. Warum werden nicht alle Eigenschaften korrekt indexiert bzw verschwinden, wenn man auf ES umstellt?

Hallo,

das kann ich so nicht nachstellen in meiner lokalen Installation. Welche Shopware-Version und welche ES-Version setzt ihr denn ein?
In den letzten Versionen gab es ja immer mal wieder Bugfixes. Eine 5.1.2 solltet ihr da schon einsetzen.

 

Grüße

Moritz

 

Moritz ich nutze immer die letzte Shopware Version. Leider klappt das nicht mit ES.

Die Eigenschaften werden zum einen alle lowercase formatiert ausgegeben. Zum anderen fehlt z.b. eine Eigenschaften Gruppe komplett im Listing.

Wenn ES auskommentiert ist. werden alle Eigenschaften korrekt angezeigt.

Bei mir ist es gleich.

Shopware ist die Version SW 5.1.2 und ES 2.2.0

So, die Eigenschaftenfilter funktionieren jetzt.  no

Eigentlich ein simpler Fehler von uns und logisch… Die Tabelle s_filter_values muss in die Tabellenkonfiguration mit rein:

Relevanz Felder:

Mit den normalen Shopware Eigenschaften lassen sich jetzt die Produkte filtern. Das ottscho Plugin mit Abhängigkeiten hab ich noch deaktiviert.

Die Filter werden auch normale dargestellt und angezeigt. Auch wenn die Reihenfolge der Filter nicht dem Backend entspricht.

Ein Fehler bleibt weiterhin bestehen  yes

Bei der direken Sucheingabe erscheint dieser:

Fatal error: Uncaught exception 'RuntimeException' with message 'ShopwarePlugins\SwagFuzzy\Bundle\SearchBundle\KeywordFacet class not supported' in /var/www/clients/client1/web2/web/test/engine/Shopware/Bundle/SearchBundleES/ProductNumberSearch.php:159 Stack trace: #0 /var/www/clients/client1/web2/web/test/engine/Shopware/Bundle/SearchBundleES/ProductNumberSearch.php(140): Shopware\Bundle\SearchBundleES\ProductNumberSearch->getHandler(Object(ShopwarePlugins\SwagFuzzy\Bundle\SearchBundle\KeywordFacet)) #1 /var/www/clients/client1/web2/web/test/engine/Shopware/Bundle/SearchBundleES/ProductNumberSearch.php(119): Shopware\Bundle\SearchBundleES\ProductNumberSearch->addCriteriaParts(Object(Shopware\Bundle\SearchBundle\Criteria), Object(Shopware\Bundle\StoreFrontBundle\Struct\ProductContext), Object(ONGR\ElasticsearchDSL\Search), Array) #2 /var/www/clients/client1/web2/web/test/engine/Shopware/Bundle/SearchBundleES/ProductNumberSearch.php(77): Shopware\Bundle\SearchBundleES\ProductNumberSearch->buildSearch(Object(Shopware\Bundle in /var/www/clients/client1/web2/web/test/engine/Shopware/Bundle/SearchBundleES/ProductNumberSearch.php on line 159
503 Service Unavailable

KeywordFacet und ProductNumberSearch sagt mir eigentlich dass er was mit der Keyword Tabelle machen will. Ich habe bereits alle Relevanz Felder und Tabellen aus den Einstellungen entfernt. Komme aber nicht weiter.

Jedes mal auch ES populate, backlog sync und shopware cache komplett geleert.

Eventuell kann @Benjamin Cremer uns weiter helfen, eh wir im Dunkeln rum stochern? Danke

Hallo, 

SwagFuzzy ist zurzeit noch nicht Elastic Search kompatibel, daher die oben genannte Fehlermeldung. 

Bitte beachtet außerdem, dass sich Elastic Search erst ab Datenmengen von etwa 100.000 Produkten lohnt. Darunter wird es wahrscheinlich eher für mehr Probleme sorgen.

Vg,

Benjamin Cremer  cool

 

 

 

 

@Benjamin Cremer schrieb:

dass sich Elastic Search erst ab Datenmengen von etwa 100.000 Produkten lohnt.

Benjamin Cremer  cool

Was ist genau mit 100.000 Produkten gemeint, inkl. Varianten?

Wir haben derzeit fast 18.000 Artikel bei uns im Shop, alles Varianten Artikel. Insgesamt also über 4,8 Mio Einzelartikel. Sind mit 100.000 Produkten auch die Varianten gemeint?

Als Server haben einen Intel Xeon E5-1650V2 mit 2x SSD 240 GB SATA Datacenter  und 64 Gb RAM.

Soweit haben wir nun auch mal uns an die ES Integration gewagt. Java und Elasticsearch sind auf dem Server installiert. und ein ergibt bei Anfrage:

 

curl -X GET ‚http://localhost:9200
{
  „name“ : „Kylun“,
  „cluster_name“ : „elasticsearch“,
  „cluster_uuid“ : „eL7Y7t1iR3iyo-9jhiUpcg“,
  „version“ : {
    „number“ : „2.4.1“,
    „build_hash“ : „c67dc32e24162035d18d6fe1e952c4cbcbe79d16“,
    „build_timestamp“ : „2016-09-27T18:57:55Z“,
    „build_snapshot“ : false,
    „lucene_version“ : „5.5.2“
  },
  „tagline“ : „You Know, for Search“
}

Wenn ich jetzt jedoch über php bin/console sw:es:index:populate den Index reinbringen möchte kommt folgende Meldung:

Indexing shop CBT24 - deutsch

  [Elasticsearch\Common\Exceptions\RequestTimeout408Exception]
  {„cluster_name“:„elasticsearch“,„status“:„yellow“,„timed_out“:true,„number_of_nodes“:1,„number_of_data_nodes“:1,„active_primary_shards“:5,„active_shards“:5,„relocating_
  shards“:0,„initializing_shards“:0,„unassigned_shards“:5,„delayed_unassigned_shards“:0,„number_of_pending_tasks“:0,„number_of_in_flight_fetch“:0,„task_max_waiting_in_que
  ue_millis“:0,„active_shards_percent_as_number“:50.0}

sw:es:index:populate [–shopId [SHOPID]]

Weiß jemand da einen Rat?