Béjean Développement

Installer Elasticsearch pour Magento 2

Objectif

Installer et configurer Elasticsearch 7.6 pour activer la recherche dans Magento 2

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.9.1 2020-11-04
OpenJDK Runtime Environment (build 11.0.9.1+1-post-Debian-1deb10u2)
OpenJDK 64-Bit Server VM (build 11.0.9.1+1-post-Debian-1deb10u2, 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.9.1

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.6.2

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

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

Si besoin, il faut activer et lancer le service Elasticsearch :

systemctl enable elasticsearch && systemctl start elasticsearch

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 :

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

Voici le détail du mon fichier de configuration :

  • node.name : ce paramètre est libre, il correspond au nom du noeud. Pour me retrouver, j'ai ajouté un -1 pour préciser que ce serveur correspond au premier noeud Elasticsearch. Cela sera utile si je souhaite créer un cluster.
  • 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.
  • 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 noeud doit connaître tous les noeuds d'un même cluster.
  • cluster.initial_master_nodes : ce dernier paramètre est un tableau qui permet de définir le ou les noeuds master d'un cluster, lien vers la documentation.

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

Relancer le service : systemctl restart elasticsearch.

Résultat

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

Vous devriez avoir le résultat :

{
  "name" : "e76-1",
  "cluster_name" : "e76-m2",
  "cluster_uuid" : "2viH6nrASiS7ogaEtFTaHg",
  "version" : {
    "number" : "7.6.2",
    "build_flavor" : "default",
    "build_type" : "deb",
    "build_hash" : "ef48eb35cf30adf4db14086e8aabd07ef6fb113f",
    "build_date" : "2020-03-26T06:34:37.794943Z",
    "build_snapshot" : false,
    "lucene_version" : "8.4.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}