Elk

De InfoXelec
Aller à la navigation Aller à la recherche

Présentation

ElasticSearch utilise des requêtes HTTP. Ces requêtes seront envoyées au serveur via l'outil CURL
Les concurrents de ElasticSearch sont OpenSearch de Amazon et Cassandra de Oracle.
Attention car en Powershell, curl est un alias de Invoke-WebRequest. Il faut donc utiliser c:\windows\system32\curl.exe
ElasticSearch fonctionne avec 2 ports. Le 9200 pour les requêtes externes et le 9300 pour la mise en cluster.

On parle d'index pour identifier un ensemble de données. L'équivalent en relationnel MySQL serait une Database.
Un type est un regroupement de documents. Sa structure n'est pas fixe mais évolutive.
Le mapping permet de définir les propriétés du type.
Un document est l'équivalent d'un ligne en SQL. C'est un objet du type.

Commandes utiles

Pour avoir une meilleure vision, on peut ajouter le paramètre ?pretty en fin de commande

Commande Description
Pour savoir si le serveur fonctionne. curl -X GET "http://@IP:9200"
Pour avoir l'état du cluster curl -X GET "http://@IP:9200/_cluster/health?pretty"
Lister les index d'un serveur curl -X GET "http://@IP:9200/_cat/indices"
Récupérer le mapping d'un index curl -X GET "http://@IP:9200/index_name/_mapping?pretty"
Création d'un index
curl -X PUT 'http://@IP:9200/index_name' -d '
  {"mappings":{
    "utilisateurs":{
      "properties:{
        "nom":{"type":"string"},
        "prenom":{"type":"string"},
        "ville":{"type":"string"}
  }}}}
Lister les Documents d'un index curl -X GET "http://@IP:9200/index_name/_search
Pour supprimer un index curl -X DELETE "http://@IP:9200/index_name"
Pour insérer des données
curl -X POST 'http://@IP:9200/_bulk' -d '
  {"create":{"_index":"index_name","type":"utilisateurs","_id":1}}
  {"nom":"nom1","prenom":"prenom1","ville":"ville1"}
  {"create":{"_index":"index_name","type":"utilisateurs","_id":2}}
  {"nom":"nom2","prenom":"prenom2","ville":"ville2"}'
Pour consulter un document curl -X GET "http://@IP:9200/index_name/utilisateurs/1"
Pour faire une recherche simple de tous les éléments curl -X GET "http://@IP:9200/index_name/utilisateurs/_search"
Pour faire une recherche simple curl -X GET "http://@IP:9200/index_name/utilisateurs/_search?q=valeur"
Pour faire une recherche sur un champ en particulier curl -X GET "http://@IP:9200/index_name/utilisateurs/_search?q=nom:valeur"

L'application ElasticHQ est une interface graphique permettant de gérer plus facilement un cluster ElasticSearch.
Cette application est développée en Python 3.6 mais n'est plus soutenue car la licence ElasticSearch a changée. L'application est encore disponible en version GitHub (https://github.com/ElasticHQ/elasticsearch-HQ) ou Docker.

Sauvegarde et restauration

La sauvegarde et restauration de bases ElasticSearch se fait avec l'application elasticdump.
Il y a deux éléments à sauvegarder le mapping et les données.

elasticdump --input=http://@IP:9200/index_name --output=/dossier/index_name_mapping.json --mapping
elasticdump --input=http://@IP:9200/index_name --output=/dossier/index_name_mapping.json --data

Bibliographie

Chaine Youtube de XAVKI et son GitLab https://gitlab.com/xavki/presentations-elastic/-/blob/master/