Elastic Search einrichten

Hallo,

irgendwie komme ich mit der Verbindung von ES und Shop nicht weiter. Ziel ist, das für einen Testshop (Community-Edition SW6) einzurichten, erstmal auf dem gleichen Webserver wie der Shop.

Ich habe mich daran orientiert: Add and remove nodes in your cluster | Elasticsearch Guide [8.3] | Elastic

Außerdem an: Set up Elasticsearch - Shopware Developer

Bevor ich, wie von Shopware vorgeschlagen, einen 3- oder 5-Node-Cluster anlege, müsste ja zunächst einmal ein einzelner Node funktionieren. Wie in der Doku von ES geschrieben, müsste beim Start von ES automatisch ein Node dem Cluster zugewiesen werden.

Bisher gemacht:
Bearbeiten der ES.Konfiguration: vi /etc/elasticsearch/elasticsearch.yml

`cluster.name: cluster1` (hat nicht geholfen, wieder auskommentiert)
`node.name: node1` (hat nicht geholfen, wieder auskommentiert)

httpdocs/meinedomain.de/.env bearbeitet:

SHOPWARE_ES_HOSTS="localhost:9200"
SHOPWARE_ES_ENABLED="1"
SHOPWARE_ES_INDEXING_ENABLED="1"
SHOPWARE_ES_INDEX_PREFIX="sw"
SHOPWARE_ES_THROW_EXCEPTION=1

/httpdocs/meinedomain.de/config/packages/elasticsearch.yaml bearbeitet

elasticsearch:
  index_settings:
    number_of_shards: 1
    number_of_replicas: 0

Neustarten von ES.: systemctl restart elasticsearch

Prüfen obs läuft: systemctl status elasticsearch.service – ok, läuft

ausgeführt: php -v gibt aus es ist php7.4 (ok)

ausgeführt: composer require shopware/elasticsearch (Ergebnis: Successfully copied all bundle files

ausgeführt: composer update (Ergebnis: Shopware Update von 6.4.12 > 6.4.13, inkl. ES-Komponente
pic-sw-update

Ausführen des Shop-Cache-Clear (ok)
pic_cache-clear

Ausführen bin/console es:status bzw. bin/console es:status über den Shop (Ergebnis: no alive nodes)
pic_es-status-no-alive-nodes

Wenn ich aus der Konsole ein einfaches CURL zum ES folgendes aufrufe, bekomme ich nur eine leere Antwort:
pic_empty-reply

Bei folgendem CURL-Aufruf bekomme ich jedoch eine Antwort von ES:

Wie bekomme ich alive nodes in den Shop? Müssen wir evtl. auf dem Server ein SSL-Zertifikat hinterlegen und in der Konfiguration den Host / User / Passwort / https:// angeben oder noch irgendwas anderes anpassen, damit es funktioniert?

Der Hoster konnte bisher leider noch nicht wirklich helfen außer ES auf dem managed Server einzurichten und hat in der bisherigen Kommunikation nix zur Konfiguration bemängelt.

Wäre super, wenn ihr einen zündenden Wink mit dem Zaunpfahl oder ähnliches für mich habt!

Ok,wir haben jetzt sowohl https als auch die Authentifizierung von ES in der /etc/elasticsearch/elasticsearch.yml deaktiviert, nun kann die Verbindung aufgebaut werden. Ab Elasticsearch 8 ist wohl die Authentifizierung standardmäßig aktiviert.

ich habe nirgendwo eine Info gefunden, wie Shopware mit der Authentifizierung von ElasticSearch umgeht (user+password sowie aufruf über https). Gibt es ein Möglichkeit die Credentials in der Shopwarekoniguration zu hinterlegen oder muss ich in der ES.-Konfiguration ‚xpack.security.enabled‘ zwingend auf ‚false‘ stellen?

Das gleiche würde mich tatsächlich auch Interessieren. Ich habe einen Opensearch Server korrekt am laufen inkl. SSL-Zertifikat. Über einen Browser funktioniert der Aufruf ohne Fehler. Aber mit Shopware kommt nur deine Fehlermeldung.

Ein zweiter Opensearch Server bei welchem HTTPS deaktiviert ist funktioniert mit Shopware.

Okay, Fehler gefunden. cUrl schmeißt einen Fehler weil nicht die komplette Zertifikatskette mitgeschickt wurde. Ich hab jetzt die fullchain.pem (Lets Encrypt Zertifikat) sowohl bei

plugins.security.ssl.transport.pemcert_filepath

als auch bei

plugins.security.ssl.transport.pemtrustedcas_filepath

hinterlegt. Damit funktioniert es.

Authentifizierung wird wie normal bei urls vorangestellt. Also im Format

https://username:password@domain.tdl:9200

Das Tool hier hat mir beim Check der Zertifikatskette geholfen: