Tutorial

Comment installer et configurer Elasticsearch sur Ubuntu 20.04

Published on May 15, 2020

Senior Manager, DevEd

Français
Comment installer et configurer Elasticsearch sur Ubuntu 20.04

Introduction

Elasticsearch est une plateforme de recherche distribuée et d’analyse de données en temps réel. Il s’agit d’un choix populaire en raison de sa facilité d’utilisation, de ses puissantes fonctionnalités et de son évolutivité.

Cet article vous guidera pour installer Elasticsearch, le configurer pour votre cas d’utilisation, sécuriser votre installation, et commencer à travailler avec votre serveur Elasticsearch.

Conditions préalables

Avant de suivre ce tutoriel, vous aurez besoin de :

Pour ce tutoriel, nous travaillerons avec la quantité minimale de CPU et de RAM requise pour exécuter Elasticsearch. Notez que la quantité de CPU, de RAM et de stockage dont votre serveur Elasticsearch aura besoin dépend du volume de journaux que vous prévoyez.

Étape 1 — Installation et configuration d’Elasticsearch

Les composants Elasticsearch ne sont pas disponibles dans les dépôts de paquets par défaut d’Ubuntu. Ils peuvent cependant être installés avec APT après avoir ajouté la liste des sources des paquets d’Elastic.

Tous les paquets sont signés avec la clé de signature Elasticsearch afin de protéger votre système contre l’usurpation de paquets. Les paquets qui ont été authentifiés à l’aide de la clé seront considérés comme fiables par votre gestionnaire de paquets. Dans cette étape, vous allez importer la clé GPG publique d’Elasticsearch et ajouter la liste des sources du paquet Elastic afin d’installer Elasticsearch.

Pour commencer, utilisez cURL, l’outil de ligne de commande pour le transfert de données avec URL pour importer la clé GPG publique d’Elasticsearch dans APT. Notez que nous utilisons les arguments -fsSL pour faire taire toute progression et toute erreur éventuelle (sauf en cas de panne de serveur) et pour permettre à cURL d’effectuer une requête sur un nouvel emplacement s’il est redirigé. Transmettez la sortie de la commande cURL au programme apt-key qui ajoute la clé GPG publique à l’APT.

  1. curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

Ensuite, ajoutez la liste des sources Elastic au répertoire sources.list.d où APT cherchera de nouvelles sources :

  1. echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list

Ensuite, mettez à jour vos listes de paquets afin qu’APT puisse lire la nouvelle source Elastic :

  1. sudo apt update

Installez ensuite Elasticsearch avec cette commande :

  1. sudo apt install elasticsearch

Elasticsearch est maintenant installé et prêt à être configuré.

Étape 2 — Configurer Elasticsearch

Pour configurer Elasticsearch, nous allons modifier son principal fichier de configuration elasticsearch.yml, dans lequel la plupart de ses options de configuration sont stockées. Ce dossier se trouve dans le répertoire /etc/elasticsearch.

Utilisez votre éditeur de texte préféré pour modifier le fichier de configuration d’Elasticsearch. Ici, nous utiliserons nano :

  1. sudo nano /etc/elasticsearch/elasticsearch.yml

Note : Le fichier de configuration d’Elasticsearch est au format YAML, ce qui signifie que nous devons conserver le format d’indentation. Veillez à ne pas ajouter d’espaces supplémentaires lorsque vous modifiez ce fichier.

Le site elasticsearch.yml fournit des options de configuration pour votre/vos cluster, nœud, chemins, mémoire, réseau, découverte et passerelle. La plupart de ces options sont préconfigurées dans le fichier, mais vous pouvez les modifier en fonction de vos besoins. Pour les besoins de notre démonstration d’une configuration à serveur unique, nous n’ajusterons les paramètres que pour l’hôte du réseau.

Elasticsearch écoute le trafic de partout sur le port 9200. Vous voudrez limiter l’accès extérieur à votre instance Elasticsearch pour empêcher les personnes extérieures de lire vos données ou de fermer votre cluster Elasticsearch par le biais de son [API REST] (https://en.wikipedia.org/wiki/Representational_state_transfer). Pour restreindre l’accès et donc accroître la sécurité, trouvez la ligne qui précise network.host, décommentez-le et remplacez sa valeur par localhost de façon à ce qu’il ressemble à ça :

/etc/elasticsearch/elasticsearch.yml
. . .
# ---------------------------------- Network -----------------------------------
#
# Set the bind address to a specific IP (IPv4 or IPv6):
#
network.host: localhost
. . .

Nous avons spécifié localhost de sorte qu’Elasticsearch écoute sur toutes les interfaces et les IP liés. Si vous souhaitez qu’il n’écoute que sur une interface spécifique, vous pouvez spécifier son IP au lieu de localhost. Sauvegardez et fermez elasticsearch.yml. Si vous utilisez nanovous pouvez le faire en appuyant sur CTRL+X, suivi de Y et ensuite ENTRÉE.

Ce sont les paramètres minimums avec lesquels vous pouvez commencer pour utiliser Elasticsearch. Vous pouvez maintenant lancer Elasticsearch pour la première fois.

Démarrez le service Elasticsearch avec systemctl. Donnez à Elasticsearch quelques instants pour démarrer. Dans le cas contraire, vous risquez d’obtenir des erreurs en ne pouvant pas vous connecter.

  1. sudo systemctl start elasticsearch

Ensuite, exécutez la commande suivante pour permettre à Elasticsearch de démarrer à chaque fois que votre serveur démarre :

  1. sudo systemctl enable elasticsearch

Elasticsearch étant activé au démarrage, passons à l’étape suivante pour discuter de la sécurité.

Étape 3 — Sécuriser Elasticsearch

Par défaut, Elasticsearch peut être contrôlé par toute personne pouvant accéder à l’API HTTP. Ce n’est pas toujours un risque pour la sécurité car Elasticsearch n’écoute que sur l’interface de bouclage (c’est-à-dire 127.0.0.1), qui n’est accessible que localement. Ainsi, aucun accès public n’est possible et tant que tous les utilisateurs du serveur sont fiables, la sécurité peut ne pas être une préoccupation majeure.

Si vous devez autoriser l’accès à distance à l’API HTTP, vous pouvez limiter l’exposition du réseau avec le pare-feu par défaut d’Ubuntu, UFW. Ce pare-feu devrait déjà être activé si vous avez suivi les étapes de la condition préalable dans le tutoriel Configuration initiale du serveur avec Ubuntu 20.04.

Nous allons maintenant configurer le pare-feu pour permettre l’accès au port par défaut de l’API HTTP d’Elasticsearch (TCP 9200) pour l’hôte à distance fiable, généralement le serveur que vous utilisez dans une configuration à serveur unique, tel que198.51.100.0. Pour autoriser l’accès, tapez la commande suivante :

  1. sudo ufw allow from 198.51.100.0 to any port 9200

Une fois que cela est fait, vous pouvez activer l’UFW avec la commande :

  1. sudo ufw enable

Enfin, vérifiez le statut de l’UFW avec la commande suivante :

  1. sudo ufw status

Si vous avez correctement spécifié les règles, vous devriez recevoir un résultat similaire à ceci :

Output
Status: active To Action From -- ------ ---- 9200 ALLOW 198.51.100.0 22 ALLOW Anywhere 22 (v6) ALLOW Anywhere (v6)

L’UFW devrait maintenant être activé et mis en place pour protéger le port 9200 d’Elasticsearch.

Si vous souhaitez investir dans une protection supplémentaire, Elasticsearch vous propose la solution commerciale plugin Shield pour l’achat.

Étape 4 — Tester Elasticsearch

Maintenant, Elasticsearch devrait fonctionner sur le port 9200. Vous pouvez le tester avec cURL et une demande GET.

  1. curl -X GET 'http://localhost:9200'

Vous devriez recevoir la réponse suivante :

Output
{ "name" : "elasticsearch-ubuntu20-04", "cluster_name" : "elasticsearch", "cluster_uuid" : "qqhFHPigQ9e2lk-a7AvLNQ", "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" }

Si vous recevez une réponse similaire à celle ci-dessus, Elasticsearch fonctionne correctement. Si ce n’est pas le cas, assurez-vous que vous avez suivi correctement les instructions d’installation et que vous avez laissé un certain temps pour qu’Elasticsearch puisse démarrer complètement.

Pour effectuer une vérification plus approfondie d’Elasticsearch, exécutez la commande suivante :

  1. curl -XGET 'http://localhost:9200/_nodes?pretty'

Dans le résultat de la commande ci-dessus, vous pouvez vérifier tous les paramètres actuels pour le nœud, le cluster, les chemins d’application, les modules, et plus encore.

Étape 5 — Utiliser Elasticsearch

Pour commencer à utiliser Elasticsearch, ajoutons d’abord quelques données. Elasticsearch utilise une API RESTful, qui répond aux commandes CRUD habituelles : create, read, update, et delete. Pour l’utiliser, nous utiliserons à nouveau la commande cURL.

Vous pouvez ajouter votre première entrée de la sorte :

  1. curl -XPOST -H "Content-Type: application/json" 'http://localhost:9200/tutorial/helloworld/1' -d '{ "message": "Hello World!" }'

Vous devriez recevoir la réponse suivante :

Output
{"_index":"tutorial","_type":"helloworld","_id":"1","_version":2,"result":"updated","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":1,"_primary_term":1}

Avec cURL, nous avons envoyé une requête HTTP POST au serveur Elasticsearch. L’URI de la demande était /tutorial/helloworld/1 avec plusieurs paramètres :

  • tutorial est l’index des données dans Elasticsearch.
  • helloworld est le type.
  • 1 est l’identifiant de notre entrée sous l’index et le type ci-dessus.

Vous pouvez récupérer cette première entrée avec une requête HTTP GET.

  1. curl -X GET -H "Content-Type: application/json" 'http://localhost:9200/tutorial/helloworld/1' -d '{ "message": "Hello World!" }'

Le résultat obtenu devrait être :

Output
{"_index":"tutorial","_type":"helloworld","_id":"1","_version":1,"found":true,"_source":{ "message": "Hello, World!" }}

Pour modifier une entrée existante, vous pouvez utiliser une requête HTTP PUT.

  1. curl -X PUT -H "Content-Type: application/json" 'localhost:9200/tutorial/helloworld/1?pretty' -d '
  2. {
  3. "message": "Hello, People!"
  4. }'

Elasticsearch devrait reconnaître une modification réussie comme celle-ci :

Output
{ "_index" : "tutorial", "_type" : "helloworld", "_id" : "1", "_version" : 2, "result" : "updated", "_shards" : { "total" : 2, "successful" : 1, "failed" : 0 }, "_seq_no" : 1, "_primary_term" : 1 }

Dans l’exemple ci-dessus, nous avons modifié le message de la première entrée en « Hello, People ». Avec cela, le numéro de version a été automatiquement augmenté à 2.

Vous avez peut-être remarqué l’argument supplémentaire pretty dans la demande ci-dessus. Il permet un format lisible par un(e) utilisateur/utilisatrice, de sorte que vous pouvez écrire chaque champ de données sur une nouvelle ligne. Vous pouvez également « embellir » vos résultats lors de la récupération des données pour obtenir un résultat plus lisible en entrant la commande suivante :

  1. curl -X GET -H "Content-Type: application/json" 'http://localhost:9200/tutorial/helloworld/1?pretty'

La réponse sera maintenant formatée pour qu’un(e) utilisateur/utilisatrice puisse l’analyser :

Output
{ "_index" : "tutorial", "_type" : "helloworld", "_id" : "1", "_version" : 2, "_seq_no" : 1, "_primary_term" : 1, "found" : true, "_source" : { "message" : "Hello, People!" } } }

Nous avons maintenant ajouté et interrogé des données dans Elasticsearch. Pour en savoir plus sur les autres opérations, veuillez consulter la documentation de l’API.

Conclusion

Vous avez maintenant installé, configuré et commencé à utiliser Elasticsearch. Pour explorer davantage les fonctionnalités d’Elasticsearch, veuillez consulter la documentation officielle d’Elasticsearch.

Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.

Learn more about our products

About the authors
Default avatar

Senior Manager, DevEd

Open source advocate and lover of education, culture, and community.

Still looking for an answer?

Ask a questionSearch for more help

Was this helpful?
 
Leave a comment


This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

Try DigitalOcean for free

Click below to sign up and get $200 of credit to try our products over 60 days!

Sign up

Join the Tech Talk
Success! Thank you! Please check your email for further details.

Please complete your information!

Become a contributor for community

Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.

DigitalOcean Documentation

Full documentation for every DigitalOcean product.

Resources for startups and SMBs

The Wave has everything you need to know about building a business, from raising funding to marketing your product.

Get our newsletter

Stay up to date by signing up for DigitalOcean’s Infrastructure as a Newsletter.

New accounts only. By submitting your email you agree to our Privacy Policy

The developer cloud

Scale up as you grow — whether you're running one virtual machine or ten thousand.

Get started for free

Sign up and get $200 in credit for your first 60 days with DigitalOcean.*

*This promotional offer applies to new accounts only.