Elk
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/