Installer Elasticsearch pour Magento 2

Objectif

Installer et configurer Elasticsearch 7.17.5 sur Debian Bullseye 11.3 car Elasticsearch est utilisé, dans Magento, pour l'indexation des produits.

Installation

Composants indispensables

Pour fonctionner Elasticsearch a besoin de Java. Je vous invite à suivre les étapes ci-dessous pour lancer l'installation :

apt install default-jre

Vérifier l'installation en lançant la commande : java --version, le résultat doit être :

openjdk 11.0.16 2022-07-19
OpenJDK Runtime Environment (build 11.0.16+8-post-Debian-1deb11u1)
OpenJDK 64-Bit Server VM (build 11.0.16+8-post-Debian-1deb11u1, mixed mode, sharing)

Puis, installer le JDK :

apt install default-jdk

Vérifier en lançant la commande : javac --version, le résultat doit être :

javac 11.0.16

Installation de Elasticsearch

apt-get install gnupg2 apt-transport-https
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | apt-key add -
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | tee -a /etc/apt/sources.list.d/elastic-7.x.list
apt-get update && apt-get install elasticsearch=7.17.5

J'ai précisé la version d'Elasticsearch car le module de recherche de Magento 2.4.5 ne fonctionne qu'avec la version 7.17.5.

Avant de configurer Elasticsearch, nous allons configurer le démarrage automatique via systemctl :

systemctl daemon-reload && systemctl enable elasticsearch.service

Configuration

Avant de lancer le service, nous allons éditer le fichier de configuration d'Elasticsearch :

nano /etc/elasticsearch/elasticsearch.yml

Vous trouverez, ci-dessous, les modifications que j'ai apportées au fichier de configuration :

cluster.name: e717-m2
node.name: e717-1
network.host: _eth0_
http.port: 9200
discovery.seed_hosts: ["e717-1"]
cluster.initial_master_nodes: ["e717-1"]

Voici le détail de mon fichier de configuration :

  • cluster.name : ce paramètre est également libre, il correspond au nom du cluster. Pour créer un cluster, il faut indiquer un nom de cluster.
  • node.name : ce paramètre est libre, il correspond au nom du nœud. J'ai ajouté un -1 pour préciser que ce serveur correspond au premier nœud Elasticsearch. Cela sera utile si je souhaite créer un cluster.
  • network.host : il est important de configurer ce paramètre dès l'installation car, par défaut, Elasticsearch écoute seulement sur l'adresse 127.0.0.1. Pour ma part, j'ai choisi d'écouter l'interface réseau. Si vous souhaitez plus d'informations sur la configuration, je vous invite à consulter la documentation, lien vers la documentation.
  • http.port : Ce paramètre permet de modifier le port d'écoute d'Elasticsearch.
  • discovery.seed_hosts : ce paramètre est un tableau d'adresses IP ou de noms d'hôtes. Il est nécessaire pour rejoindre un cluster, car chaque nœud doit connaître tous les nœuds d'un même cluster.
  • cluster.initial_master_nodes : ce dernier paramètre est un tableau qui permet de définir le ou les nœuds master d'un cluster, lien vers la documentation.

Avant d'enregistrer et de fermer le fichier, n'oubliez pas de modifier e717-1 vers l'URL de votre serveur Elasticsearch.

Puis, il faut lancer le service Elasticsearch :

systemctl start elasticsearch.service

Vérifier si Elasticsearch est actif en lançant cette commande : systemctl status elasticsearch.service.

Si besoin, vous pouvez relancer le service avec la commande : systemctl restart elasticsearch.service.

Résultat

Pour contrôler que le serveur fonctionne correctement, je vous invite à lancer la commande : curl http://e717-1:9200, en remplaçant e717-1 par l'URL de votre serveur.

Vous devriez avoir le résultat :

{
  "name" : "e717-1",
  "cluster_name" : "e717-m2",
  ...
  "version" : {
    "number" : "7.17.5",
    ...
  },
  "tagline" : "You Know, for Search"
}