Shopware 5 und Shopware 6 mit Elasticsearch verbinden

Shopware 5 und Shopware 6 mit Elasticsearch verbinden

Elasticsearch ist eine schnelle und skalierbare Suchmaschine und Analytics-Engine, die Kunden unserer Managed vServer, Managed Server und ScaleServer zur Verfügung steht. Für die Timme Cloud 2.0 kann sie auf Wunsch zugebucht werden. Ein- bzw. ausschalten können Sie Elasticsearch ganz einfach über Ihr Server Control Panel (zur Anleitung).

Mit Hilfe dieser verteilten RESTful-Suchmaschine können viele verschiedene Arten von Suchanfragen durchgeführt und kombiniert werden – egal wie groß der Datenbestand ist. In der nachfolgenden Anleitung zeigen wir Ihnen, wie Sie Elasticsearch mit Shopware 5 bzw. Shopware 6 verbinden.

Bitte beachten Sie: Shopware empfiehlt, die Elasticsearch-Integration als erweiterte Shopware-Funktion zu betrachten. Da kleinere Shops möglicherweise keine sichtbaren Vorteile daraus ziehen können, empfiehlt Shopware in diesen Fällen die Suchmaschine nicht einzusetzen. Außerdem weist Shopware darauf hin, dass eine Single Node Konfiguration nur für Entwicklungsumgebungen ausreichend ist. Ausführliche Informationen seitens Shopware zu Systemvoraussetzungen und -konfigurationen finden Sie in dieser Anleitung von Shopware.

1. Shopware 5 mit Elasticsearch verbinden

Diese Anleitung gilt für alle Versionen von Shopware 5.


1

Zunächst müssen Sie Ergänzungen in der config.php vornehmen.

  • Loggen Sie sich mit Ihrem FTP-Zugang ein.
  • Wählen Sie den Ordner "web".
  • Speichen Sie danach die Datei "config.php" lokal ab.
  • Öffnen Sie nun mit einem Editor die heruntergeladene Datei.

Ergebnis: Die config.php ist geöffnet.



2

Damit Shopware 5 Elasticsearch für die Suche verwendet, müssen Sie folgenden Block zur config.php hinzufügen:

Hinweis:

  • Tragen Sie unter 'version' die von Ihnen installierte Elasticsearch-Version ein.
  • Tragen Sie als Kunde eines Cloud-Servers den Elasticsearch-Server anstelle von "localhost" ein.
'es' => [
        'enabled' => true,
        'number_of_replicas' => null,
        'number_of_shards' => null,
        'version' => '7.10.2',
        'dynamic_mapping_enabled' => true,
        'client' => [
            'hosts' => [
                'localhost:9200'
            ]
        ],
  • Die nächsten 4 Zeilen sind optional und sollten nur verwendet werden, wenn Elasticsearch auch für das Backend genutzt werden soll:
        'backend' => [
            'write_backlog' => true,
            'enabled' => true,
        ],
    ],
  • Vollständig sieht die Datei dann beispielsweise so aus:

  array (
    'host' => '127.0.0.1',
    'port' => '3306',
    'username' => '[Datenbankbenutzer]',
    'password' => '[Datenbankpasswort]',
    'dbname' => '[Datenbankname]',
  ),
    'es' => [
        'enabled' => true,
        'number_of_replicas' => null,
        'number_of_shards' => null,
        'version' => '7.10.2',
        'dynamic_mapping_enabled' => true,
        'client' => [
            'hosts' => [
                'localhost:9200'
            ]
        ],
        'backend' => [
            'write_backlog' => true,
            'enabled' => true,
        ],
    ],
);
  • Speichern Sie die Änderungen in der Datei.
  • Laden Sie die Datei über den FTPClient wieder hoch, wodurch Sie die Originaldatei auf dem Server ersetzen.

Ergebnis: Die config.php wurde angepasst und hochgeladen.



3

Nun müssen Sie noch den Suchindex neu aufbauen lassen.

  • Nutzen Sie Ihren SSH-Zugang, um sich mit dem Server zu verbinden.
  • Führen Sie nun über die Konsole folgenden Befehl aus:
php bin/console sw:es:index:populate
  • Sollten Sie Elasticsearch in Schritt 2 auch für das Backend aktiviert haben, führen Sie über die Konsole zusätzlich noch diesen Befehl aus:
php bin/console sw:es:backend:index:populate

Hinweis: Wie lang die Ausführung dieser Prozesse dauert ist abhängig von der Anzahl der zu indizierenden Produkte.

Ergebnis: Der Suchindex wurde neu aufgebaut.



4

Nachdem der Suchindex neu aufgebaut wurde, müssen Sie nun vier Cronjobs in ISPConfig einrichten, die sicherstellen, dass der Index regelmäßig neu aufgebaut wird.

  • Loggen Sie sich bitte über Ihr Server Control Panel ein.
  • Wählen Sie im Hauptmenü den Punkt "Webseiten".

Ergebnis: Die Seite "Webseiten" wird angezeigt.



5

  • Im Untermenü befindet sich der Punkt "Kommandozeile".
  • Wählen Sie hier "Cronjobs".

Ergebnis: Der Bereich Cronjobs wird geöffnet.



6

  • Klicken Sie auf den grünen Button "Neuen Cronjob anlegen", um einen neuen Cronjob zu erstellen.

Ergebnis: Es öffnet sich das Formular Cronjob.



7

Die vier Befehle werden jede Nacht um 03:30 Uhr ausgeführt und arbeiten den Backlog ab, bauen den Index neu auf und entfernen danach alte Indizes und alte Backlog-Einträge.

Füllen Sie das Formular aus.

Hinweis: In unserer Anleitung lassen wir die Befehle zusammen ausführen. Sie können diese Einträge aber auch aufteilen, um im Fehlerfall einfacher auf einen alten Index zurückzuwechseln. Es kann zum Beispiel sinnvoll sein, die cleanup- und clear-Befehle nur manuell auszuführen, wenn vorher getestet wurde, dass der neue Index korrekt aufgebaut werden konnte.


1. Website wählen: Wählen Sie per Dropdown die Website aus, für die der Cronjob angelegt werden soll.

2. Minuten: Geben Sie den Wert 30 ein.

3. Stunden: Geben Sie den Wert 3 ein.

4. Tage des Monats / Monate / Tage der Woche: Geben Sie jeweils ein * (Sternchen) ein.

5a Auszuführender Befehl: Geben Sie folgenden Befehl ein:

30 3 * * * cd [web_root] && [php] bin/console sw:es:backlog:sync && [php] bin/console sw:es:index:populate && [php] bin/console sw:es:index:cleanup && [php] bin/console sw:es:backlog:clear

5b Auszuführender Befehl: Sollten Sie Elasticsearch in Schritt 2 auch für das Backend aktiviert haben, geben Sie für den zusätzlichen Cronjob diesen Befehl ein:

30 4 * * * cd [web_root] && [php] bin/console sw:es:backend:sync && [php] bin/console sw:es:backend:index:populate && [php] bin/console sw:es:backend:index:cleanup

6. Ausgabe loggen: Stellen Sie die Schaltfläche auf ein, damit die Ausgabe im cron.log loggt.

7. Aktiv: Stellen Sie die Schaltfläche auf ein, damit der Cronjob ausgeführt wird.

8. Beschreibung: Dieses Feld ist optional. Hier können Sie eine eigene Beschreibung einfügen, damit Sie die Cronjobs später eindeutig einer Aktion zuordnen können.

9. Speichern: Bestätigen Sie die Eingabe mit einem Klick auf die grüne Schaltfläche "Speichern".

Ergebnis: Das Cronjob-Formular zur Sicherstellung des Suchindexaufbaus wurde ausgefüllt sowie bestätigt und Sie gelangen zurück in die Übersichtsseite aller Cronjobs.

Hinweis: Für weiterführende Informationen zur Funktionsweise der einzelnen Befehle und für weitere Optionen steht Ihnen die offizielle Dokumentation seitens Shopware unter https://developers.shopware.com/sysadmins-guide/elasticsearch-setup/ zur Verfügung.


Geschafft! Sie haben Shopware 5 mit Elasticsearch verbunden!

2. Shopware 6 mit Elasticsearch verbinden

Diese Anleitung gilt für alle Versionen von Shopware 6.


1

Zunächst müssen Sie Ergänzungen in der .env vornehmen.

  • Loggen Sie sich mit Ihrem FTP-Zugang ein.
  • Wählen Sie den Ordner "web".
  • Speichen Sie danach die Datei ".env" lokal ab.
  • Öffnen Sie mit einem Editor die heruntergeladene Datei.

Ergebnis: Die .env ist geöffnet.



2

Damit Shopware 6 Elasticsearch für die Suche verwendet, müssen Sie folgenden Block zur .env hinzufügen:

Hinweis:

  • Tragen Sie als Kunde eines Cloud-Servers den Elasticsearch-Server anstelle von "localhost" ein.
SHOPWARE_ES_HOSTS="localhost"
SHOPWARE_ES_INDEXING_ENABLED="1"
SHOPWARE_ES_INDEX_PREFIX="sw6"
  • Speichern Sie diese Änderungen.
  • Laden Sie die Datei über den FTPClient wieder hoch, wodurch die Datei ersetzt wird.

Ergebnis: Die .env wurde angepasst und hochgeladen.



3

Nun müssen Sie noch den Suchindex neu aufbauen lassen.

  • Nutzen Sie Ihren SSH-Zugang, um sich mit dem Server zu verbinden.
  • Führen Sie nun über die Konsole folgenden Befehl aus:
php bin/console es:index

Hinweis: Wie lang die Ausführung dieses Befehls dauert ist abhängig von der Anzahl der zu indizierenden Produkte.

Ergebnis: Der Suchindex wurde neu aufgebaut.



4

Jetzt müssen Sie Elasticsearch noch über die .env Datei aktivieren.

  • Rufen Sie .env erneut im FTPClient auf.
  • Ergänzen Sie die nachfolgende Zeile oder passen Sie die bereits vorhandene Zeile an:
SHOPWARE_ES_ENABLED="1"

Ergebnis: Elasticsearch wurde in der .env Datei aktiviert.



5

Nun muss in ISPConfig ein Cronjob eingerichtet werden, der sicherstellt, dass der Suchindex regelmäßig neu aufgebaut wird.

  • Loggen Sie sich bitte über Ihr Server Control Panel ein.
  • Wählen Sie im Hauptmenü den Punkt "Webseiten".

Ergebnis: Die Seite "Webseiten" wird angezeigt.



6

  • Im Untermenü befindet sich der Punkt "Kommandozeile".
  • Wählen Sie hier "Cronjobs".

Ergebnis: Der Bereich Cronjobs wird geöffnet.



7

  • Klicken Sie auf den grünen Button "Neuen Cronjob anlegen", um einen neuen Cronjob zu erstellen.

Ergebnis: Es öffnet sich das Formular Cronjob.



8

Dieser Befehl wird jede Nacht um 03:30 Uhr ausgeführt und reindiziert alle Artikel neu.

Füllen Sie das Formular aus.

1. Website wählen: Wählen Sie per Dropdown die Website aus, für die der Cronjob angelegt werden soll.

2. Minuten: Geben Sie den Wert 30 ein.

3. Stunden: Geben Sie den Wert 3 ein.

4. Tage des Monats / Monate / Tage der Woche: Geben Sie jeweils ein * (Sternchen) ein.

5. Auszuführender Befehl: Geben Sie folgenden Befehl ein:

30 3 * * * cd [web_root] && [php] bin/console es:index

6. Ausgabe loggen: Stellen Sie die Schaltfläche auf ein, damit die Ausgabe im cron.log loggt.

7. Aktiv: Stellen Sie die Schaltfläche auf ein, damit der Cronjob ausgeführt wird.

8. Beschreibung: Dieses Feld ist optional. Hier können Sie eine eigene Beschreibung einfügen, damit Sie die Cronjobs später eindeutig einer Aktion zuordnen können.

9. Speichern: Bestätigen Sie die Eingabe mit einem Klick auf die grüne Schaltfläche "Speichern".

Ergebnis: Der Cronjob zur Sicherstellung des Suchindexaufbaus wurde eingerichtet und Sie gelangen in die Übersichtsseite aller Cronjobs.

Hinweis: Shopware selbst prüft parallel dazu alle 5 Minuten über einen scheduled task, ob das Reindizieren abgeschlossen ist und würde den alten auf den neuen Index umschalten.



9

Wurde der neue Suchindex korrekt aufgebaut, können Sie nun alte, nicht mehr benötigte Indizes entfernt werden.

  • Legen Sie dafür einen weiteren, neuen Cronjob an, indem Sie die Schritte 5 bis 7 wiederholen.

Ergebnis: Es haben ein neues Formular Cronjob geöffnet.



10

Füllen Sie das Formular aus.

1. Website wählen: Wählen Sie per Dropdown die Website aus, für die der Cronjob angelegt werden soll.

2. Minuten: Geben Sie den Wert 30 ein.

3. Stunden: Geben Sie den Wert 3 ein.

4. Tage des Monats / Monate / Tage der Woche: Geben Sie jeweils ein * (Sternchen) ein.

5. Auszuführender Befehl: Geben Sie folgenden Befehl ein:

php bin/console es:index:cleanup

6. Ausgabe loggen: Stellen Sie die Schaltfläche auf ein, damit die Ausgabe im cron.log loggt.

7. Aktiv: Stellen Sie die Schaltfläche auf ein, damit der Cronjob ausgeführt wird.

8. Beschreibung: Dieses Feld ist optional. Hier können Sie eine eigene Beschreibung einfügen, damit Sie die Cronjobs später eindeutig einer Aktion zuordnen können.

9. Speichern: Bestätigen Sie die Eingabe mit einem Klick auf die grüne Schaltfläche "Speichern".

Ergebnis: Der Cronjob zur Enfernung alter bzw. nicht mehr benötigter Indizes wurde eingerichtet und Sie gelangen zurück in die Übersichtsseite aller Cronjobs.


Hinweis: Für weiterführende Informationen zur Funktionsweise der einzelnen Befehle und für weitere Optionen steht Ihnen die offizielle Dokumentation seitens Shopware unter https://developers.shopware.com/sysadmins-guide/elasticsearch-setup/ zur Verfügung.


Geschafft! Sie haben Shopware 6 mit Elasticsearch verbunden!

Finden Sie den passenden Tarif

Unser Tarifberater hilft Ihnen dabei, das passende Paket zu finden. Bei Fragen berät Sie unser Sales-Team sehr gerne unter +49 (0) 4131 / 22 78 1-25 oder sales@timmehosting.de.

Bitte beachten Sie: Der Tarifberater dient nur der groben Orientierung. Ihr tatsächlicher Bedarf kann durch den Ressourcenbedarf Ihrer Anwendung(en), tageszeitabhängige/saisonale/aktionsbedingte Schwankungen des Besucheraufkommens, geplantes Wachstum und weitere Faktoren von der Empfehlung abweichen.

  • 1
  • 2
  • 3
  • 4
  • 5

Was möchten Sie hosten?

Möchten Sie einen oder mehrere Shops hosten? (Eine Multishop-Installation gilt als ein Shop.)

Möchten Sie eine oder mehrere Websites hosten? (Eine Multisite-Installation gilt als eine Website.)

Wieviele Besucher haben Sie insgesamt pro Tag?

Wieviele Besucher haben Sie insgesamt pro Tag?

Wieviele Besucher haben Sie insgesamt pro Tag?

Wieviele Artikel haben Sie insgesamt in Ihrem Shop/Ihren Shops (inkl. Varianten)?

Wieviele Artikel haben Sie insgesamt in Ihrem Shop/Ihren Shops (inkl. Varianten)?

Wieviel Speicherplatz benötigen Sie insgesamt?

Wieviel Speicherplatz benötigen Sie insgesamt?

Wieviel Speicherplatz benötigen Sie insgesamt?

Wir empfehlen Ihnen folgende Lösungen:

ScaleServer oder Web Hosting

Zu den ScaleServer Paketen Zu den Web Hosting Paketen

Wir empfehlen Ihnen folgende Lösungen:

ScaleServer oder Shop Hosting

Zu den ScaleServer Paketen Zu den Shop Hosting Paketen

Wir empfehlen Ihnen folgende Lösungen:

Managed vServer oder ScaleServer

Zu den Managed vServer Paketen Zu den ScaleServer Paketen

Wir empfehlen Ihnen folgende Lösungen:

Managed Server oder ScaleServer

Zu den Managed Server Paketen Zu den ScaleServer Paketen

Wir empfehlen Ihnen unsere

Timme Cloud 2.0

Zur Timme Cloud 2.0