Elasticsearch - Shopware- und Magento-Suchfunktion einfach beschleunigen

SoftwareShopwareMagento
Manuela Mörmel

Mit Elasticsearch lässt sich die Suchfunktion von Onlineshops beschleunigen. Für viele Anwendungen, wie beispielsweise Shopware und Magento, gibt es Anbindungen an die Elasticsearch-Suche. Im Beitrag zeigen wir Vor- und Nachteile.

Was ist Elasticsearch?

Elasticsearch ist eine Such- und Analyse-Engine in der Programmiersprache Java. Damit lässt sich die Suchfunktion von Onlineshops mit einer hohen Anzahl an Artikeln durch die Indexierung beschleunigen.

Indexierung

Elasticsearch erstellt einen oder mehrere Indizes, die jeweils wie eine Art Datenbank funktionieren und von der Searchengine später durchsucht werden. Der Index wird in mehrere Typen unterteilt, was bei einer gängigen Datenbank eine Tabelle wäre. In den Indizes können nun Dokumente abgelegt werden, welche jeweils einem Typ zugeordnet werden können. Im Gegensatz zu klassischen SQL-Datenbanken haben die Dokumente allerdings kein festes Format, sondern können jeweils über eine beliebige Struktur aus Attributen bestehen. Um Elasticsearch mit Magento oder Shopware zu verwenden, wird der Produktkatalog von der jeweiligen Integration in einen Index kopiert. Dieser Index kann mit der schnellen Suchfunktionen des Tools durchsucht werden, anstelle der herkömmlichen MySQL basierten Suche.

Für das Abspeichern der Daten kann Elasticsearch den Index in mehrere shards zerlegen. Um die Auslastung zu verteilen, lassen sich die shards auf mehrere nodes aufteilen. Dabei wird ein node als „Master node“ definiert. Aus unserer Erfahrung ist den meisten Fällen ein einzelner node für kleine und mittlere Onlineshops völlig ausreichend.

Vor- und Nachteile

Elasticsearch bietet als Searchengine viele Vorteile. Die Volltextsuche ist bei hohen Datenmengen wesentlich schneller als die Volltextsuche von MySQL, sodass die Produktsuchen wesentlich schneller ausgeführt werden können als mit herkömmlichen Suchfunktionen. Dieser Vorteil stellt sich allerdings erst mit einer höheren Anzahl an Produkten ein.

Der Nachteil besteht darin, dass das Setup durch die zusätzliche Software komplexer wird und Elasticsearch nicht in allen Umgebungen zur Verfügung steht. Bei maxcluster steht Elasticsearch ohne Zusatzkosten allen Kunden zur Verfügung.

Die Effizienz der Suche hängt stark von dem genutzten Plugin ab. Insofern verhält sich die Suche nicht allen Anwendungen gleich, sodass es Unterschiede zwischen Magento 1, Magento 2, Shopware und anderen Anwendungen gibt.

Elasticsearch und Shopware

Ab Version Shopware 5.0 wird die Elasticsearch Integration bereits unterstützt. In der Grundeinstellung ist die Integration allerdings disabled. Um sie zu aktivieren, muss die config.php um folgenden Code erweitert werden:

 'es' => [   
         'enabled' => true,
         'number_of_replicas' => null,
         'number_of_shards' => null,
         'version' => '6.4.1',
           'client' => [   
             'hosts' => [  
               'localhost:9200'
             ]         
          ],         
          'backend' => [  
              'write_backlog' => true,
             'enabled' => true,   
          ], 
    ],

Die Daten lassen sich mithilfe der Befehle "php bin/console sw:es:index:populate" und „php bin/console sw:es:backend:index:populate“ übernehmen. Hierzu finden Sie weitere Informationen auf Shopware Developers.

Mit der Version 5.5 wurde die Elasticsearch Unterstützung stark verbessert, sodass neben der Suche auch Module im Backend indexiert werden können und sich dadurch erheblich beschleunigen.

Elasticsearch 6 ist mit Version Shopware 5.5.0 kompatibel. Wichtig: Eine Neuindexierung ist zwingend erforderlich, da ab Shopware 5.5.0 die Indexierung anders durchgeführt wird. Der Demoshop Shopware 5.5 zeigt die Elasticsearch 6 unterstützte Suchfunktion mit Autovervollständigung.

Demo 1: Shopware 5.5 mit Elasticsearch 6

Demo 1: Shopware 5.5 mit Elasticsearch 6

Magento 1 Unterstützung

Für Magento 1 empfehlen wir die Magento Erweiterung von Wyomind. Dieses Plugin liefert eine Elasticsearch basierte Suche mit zahlreichen zusätzlichen Funktionen wie zum Beispiel einer Autovervollständigung. Diese können Sie in dem Magento 1 Demoshop einsehen. (Siehe Demo 2). Nach der Eingabe des gesuchten Artikels im Suchfeld öffnet sich ein Fenster unterhalb des Suchfeldes mit Vorschlägen zur Autovervollständigung. Dabei werden sowohl die Artikelbezeichnungen, ein Vorschaubild als auch der Preis angezeigt. Diese Vorschläge können ausgewählt und angeklickt werden.

Demo 2: Magento 1 Demoshop mit Elasticsearch und Plugin Wyomind

Demo 2: Magento 1 Demoshop mit Elasticsearch und Plugin Wyomind

Die mitgelieferte Magento 1 Suche, ohne das Wyomind Plugin, enthält keine Autovervollständigung möglicher Suchergebnisse (siehe Demo 3). Es wird lediglich ein Vorschlag zur Autovervollständigung eines möglichen Suchbegriffes angeboten.

Demo 3: Standardsuchfunktion in Magento 1

Demo 3: Standardsuchfunktion in Magento 1

Magento 2 Unterstützung

Mit Version Magento 2.3 gibt es in der Communitiy Edition native Unterstützung für Elasticsearch. In der Commerce Edition von Magento steht diese Integration dagegen bereits mit Magento 2.1 zur Verfügung.

Weitere Funktionen sowie Unterstützung für andere Magento 2 Versionen bietet außerdem das kostenfreie Open Source Plugin Elasticsuite von Smile.

Demo 4: Magento 2 Demoshop mit Elasticsuite von Smile

Demo 4: Magento 2 Demoshop mit Elasticsuite von Smile

Elasticsearch und eigene Anwendungen

Selbst erstellte Anwendungen (oder Anwendungen ohne existierende Integration) können ebenfalls einfach an Elasticsearch angebunden werden. Mithilfe der gut dokumentierten REST API lassen sich Daten in Elasticsearch ablegen und wieder finden.

Einrichtung bei maxcluster

Bei maxcluster lässt sich Elasticsearch leicht über das Managed Center in der gewünschten Edition installieren. Dazu wählen Sie den Menüpunkt Elasticsearch aus. Anschließend installieren Sie die gewünschte Version von Elasticsearch. Zuletzt legen Sie eine neue Instanz an, welche Magento dann verwenden kann.

Falls Sie für bestimmte Integrationen noch zusätzliche Plugins benötigen, können wir diese gerne auf Anfrage an support@maxcluster.de für Sie installieren.

Elasticsearch im Managed Center von maxcluster einrichten

Elasticsearch im Managed Center von maxcluster einrichten

Als Alternative zu Elasticsearch bieten wir außerdem Solr und Sphinx an. Sollten Sie Fragen haben, freuen wir uns auf Ihre Anfrage via E-Mail an support@maxcluster.de oder telefonisch unter 05251/41 41 30.

Fazit

Mit Elasticsearch lässt sich die Suchfunktion von Onlineshops, die eine hohe Anzahl an Produkten führen, stark beschleunigen. Außerdem rentiert sich die Installation der Plugins oft bereits aufgrund der kundenfreundlichen Suche dank Autovervollständigung auch für kleine Onlineshops.

Bild: ©vegefox.com – stock.adobe.com, 2019