GNU/Linux >> Tutoriels Linux >  >> Linux

Comment installer et configurer Elasticsearch sur Ubuntu 18.04

Elasticsearch est un moteur de recherche gratuit et open source, basé sur Apache Lucene et équipé d'une capacité de texte intégral et d'une prise en charge des architectures distribuées. Il s'agit d'une solution établie de longue date dans le domaine de l'analyse de données en temps réel.

Dans ce tutoriel, vous trouverez toutes les étapes nécessaires pour créer et configurer un serveur Elasticsearch sur Linux Ubuntu 18.04.

Tout d'abord, connectez-vous à votre serveur via une connexion SSH. Si vous ne l'avez pas encore fait, il est recommandé de suivre notre guide pour vous connecter en toute sécurité avec SSH. Dans le cas d'un serveur local, passez à l'étape suivante et ouvrez le terminal de votre serveur.

Installation Java

Avant de procéder à l'installation d'Elasticsearch, installez le kit de développement Java. Pour ce faire, suivez notre guide sur la façon d'installer Java sur Ubuntu 18.04. Si JDK est déjà installé sur votre système, ignorez cette étape.

Installation d'Elasticsearch

Le package d'installation peut être téléchargé directement depuis le site Web d'Elastic :

$ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.3.2-amd64.deb

Une fois le téléchargement terminé, procédez à l'installation du package :

$ sudo dpkg -i elasticsearch-7.3.2-amd64.deb

Ensuite, procédez en installant et en démarrant le service via :

$ sudo systemctl enable elasticsearch.service
$ sudo systemctl start elasticsearch.service

Configuration du pare-feu

En cas de pare-feu sur le système, il peut être nécessaire d'autoriser le trafic vers le service Elasticsearch en activant le port approprié.

Lorsque vous utilisez le pare-feu UFW, saisissez cette commande pour déverrouiller le port Elasticsearch par défaut :

$ sudo ufw allow 9200

À ce stade, le pare-feu autorisera les connexions sur le port 9200.

Vérification de l'état du service

Vérifiez si le service est en cours d'exécution et vérifiez les ports TCP qui écoutent actuellement, en exécutant :

$ netstat -a -o -n | grep LISTEN

Ensuite, les ports d'écoute 9200 et 9300 comme il faut le voir, comme suit :

tcp        0 0 127.0.0.53:53           0.0.0.0:* LISTEN   off (0.00/0/0)

tcp        0 0 0.0.0.0:22              0.0.0.0:* LISTEN   off (0.00/0/0)

tcp6       0 0 127.0.0.1:9200          :::* LISTEN   off (0.00/0/0)

tcp6       0 0 ::1:9200                :::* LISTEN   off (0.00/0/0)

tcp6       0 0 127.0.0.1:9300          :::* LISTEN   off (0.00/0/0)

tcp6       0 0 ::1:9300                :::* LISTEN   off (0.00/0/0)

Utiliser Elasticsearch

Maintenant que le service est en cours d'exécution, utilisez des tests en saisissant des données et en vérifiant qu'elles seront trouvées ultérieurement.

N. B. Si vous utilisez un serveur distant, remplacez localhost par l'adresse IP de votre serveur dans les commandes ci-dessous.

Dans cet exemple, saisissez 3 produits commerciaux :

$ curl -POST 'http://localhost:9200/products/1' -curl -H 'Content-Type: application/json' -d '

{

    "name": "Coffe Machine 1",

    "uuid": "00000010"

}'

En faisant l'appel ci-dessus, un nouveau document sera inséré dans l'index "produits" avec l'attribut "nom" correspondant à "Coffe Machine 1" et avec un identifiant "uuid":

{"_index":"index","_type":"products","_id":"cUqGY20Bm2mQybZCoeKU","_version":1,"result":"created","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":1,"_primary_term":1}

Elasticsearch répondra comme indiqué ci-dessus, en spécifiant l'identifiant du produit inséré et d'autres données de rapport.

Procédez ensuite en insérant 2 autres produits :

$ curl -POST 'http://localhost:9200/index/products' -curl -H 'Content-Type: application/json' -d '

{

    "name": "White Desk",

    "uuid": "WD000010"

}'
                $ curl -POST 'http://localhost:9200/index/products' -curl -H 'Content-Type: application/json' -d '

{

    "name": "Black Desk",

    "uuid": "WD000011"

}'

Une fois terminé, vous pouvez procéder en effectuant votre première recherche en indiquant "Desk" comme paramètre de recherche :

$ curl -X GET "http://localhost:9200/index/_search?q=Desk*&pretty"

Comme vous pouvez le voir, 2 résultats, dont les deux pupitres insérés ci-dessus, sont obtenus :

{

    ...

    "hits" : [

      {

        ….

        "_source" : {

          "name" : "White Desk",

          "uuid" : "WD000010"

        }

      },

      {

        ...

        "_score" : 1.0,

        "_source" : {

          "name" : "Black Desk",

          "uuid" : "WD000011"

        }

      }

    ]

  }

}

Configuration d'Elastisearch

Tous les fichiers de configuration Elasticsearch se trouvent dans le répertoire /etc/elasticsearch. Le fichier le plus important est elasticsearch.yml qui permet de modifier les paramètres de fonctionnement de base du système, tels que les informations du cluster, les paramètres de connexion TCP/IP ou les dossiers où stocker les données.

Tous les fichiers de configuration présents utilisent le format YAML, donc lors de l'édition de ces fichiers, faites attention à l'indentation.

Améliorer la sécurité

Une des premières choses à faire pour augmenter la sécurité du service est de limiter les connexions entrantes, n'admettant que les locales. De cette façon, seule votre application sur le serveur peut utiliser le service.

Pour modifier la carte d'écoute modifiez le fichier /etc/elasticsearch/elasticsearch.yml en allant décommenter et modifiez la ligne suivante :

…

network.host: 127.0.0.1

...

Enregistrez le fichier et redémarrez le service pour appliquer les modifications :

$ sudo systemctl restart elasticsearch.service

Attendez quelques minutes et vérifiez que le service écoute uniquement sur l'interface locale en lançant :

$ netstat -a -o -n | grep LISTEN

Pour garder le service disponible également pour une utilisation externe, il est toujours possible de changer le port d'écoute pour masquer la présence d'Elasticsearch.

Modifiez le fichier de configuration principal /etc/elasticsearch/elasticsearch.yml :

…

#

# Set the bind address to a specific IP (IPv4 or IPv6):

#

network.host: 0.0.0.0

#

# Set a custom port for HTTP:

#

http.port: 2900

...

NB Au lieu de la porte 2900, n'importe quelle autre porte peut être insérée.

Après avoir enregistré le fichier, redémarrez le service :

$ sudo systemctl restart elasticsearch.service

Pour vérifier l'état du service, après avoir appliqué les modifications, utilisez toujours netstat :

$ netstat -a -o -n | grep LISTEN

Linux
  1. Comment installer et configurer Redis sur Ubuntu 18.04

  2. Comment installer et configurer Redmine sur Ubuntu 18.04

  3. Comment installer et configurer Samba sur Ubuntu 18.04

  4. Comment installer et configurer Elasticsearch sur Ubuntu 20.04

  5. Comment installer et configurer Fail2ban sur Ubuntu ?

Comment installer et configurer Git sur Ubuntu 20.04

Comment installer et configurer OpenVAS 9 sur Ubuntu

Comment installer et configurer Redis dans Ubuntu 20.04

Comment installer et configurer Neo4j sur Ubuntu 20.04

Comment installer et configurer le SDK Ubuntu dans Ubuntu 16.04 et 14.04

Comment installer et configurer Elasticsearch sur Ubuntu 20.04