Différences entre les versions de « Elk »
(Une version intermédiaire par le même utilisateur non affichée) | |||
Ligne 1 : | Ligne 1 : | ||
=Présentation= | =Présentation= | ||
ElasticSearch utilise des requêtes HTTP. Ces requêtes seront envoyées au serveur via l'outil <b>CURL</b>< | ElasticSearch utilise des requêtes HTTP. Ces requêtes seront envoyées au serveur via l'outil <b>CURL</b><br> | ||
<b>Attention car en Powershell, curl est un alias de Invoke-WebRequest. Il faut donc utiliser c:\windows\system32\curl.exe</b>< | Les concurrents de ElasticSearch sont OpenSearch de Amazon et Cassandra de Oracle.<br> | ||
<b>Attention car en Powershell, curl est un alias de Invoke-WebRequest. Il faut donc utiliser c:\windows\system32\curl.exe</b><br> | |||
ElasticSearch fonctionne avec 2 ports. Le 9200 pour les requêtes externes et le 9300 pour la mise en cluster. | ElasticSearch fonctionne avec 2 ports. Le 9200 pour les requêtes externes et le 9300 pour la mise en cluster. | ||
On parle d'<b>index</b> pour identifier un ensemble de données. L'équivalent en relationnel MySQL serait une Database.< | On parle d'<b>index</b> pour identifier un ensemble de données. L'équivalent en relationnel MySQL serait une Database.<br> | ||
Un <b>type</b> est un regroupement de documents. Sa structure n'est pas fixe mais évolutive.< | Un <b>type</b> est un regroupement de documents. Sa structure n'est pas fixe mais évolutive.<br> | ||
Le <b>mapping</b> permet de définir les propriétés du type.< | Le <b>mapping</b> permet de définir les propriétés du type.<br> | ||
Un <b>document</b> est l'équivalent d'un ligne en SQL. C'est un objet du type. | Un <b>document</b> est l'équivalent d'un ligne en SQL. C'est un objet du type. | ||
Ligne 50 : | Ligne 51 : | ||
|} | |} | ||
L'application ElasticHQ est une interface graphique permettant de gérer plus facilement un cluster ElasticSearch.< | L'application ElasticHQ est une interface graphique permettant de gérer plus facilement un cluster ElasticSearch.<br> | ||
Cette application est développée en Python 3.6 mais n'est plus soutenue car la licence ElasticSearch a changée. | 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. | L'application est encore disponible en version GitHub (https://github.com/ElasticHQ/elasticsearch-HQ) ou Docker. | ||
=Sauvegarde et restauration= | =Sauvegarde et restauration= | ||
La sauvegarde et restauration de bases ElasticSearch se fait avec l'application elasticdump.< | La sauvegarde et restauration de bases ElasticSearch se fait avec l'application elasticdump.<br> | ||
Il y a deux éléments à sauvegarder le mapping et les données.< | Il y a deux éléments à sauvegarder le mapping et les données.<br> | ||
<pre>elasticdump --input=http://@IP:9200/index_name --output=/dossier/index_name_mapping.json --mapping | <pre>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</pre> | elasticdump --input=http://@IP:9200/index_name --output=/dossier/index_name_mapping.json --data</pre> |
Version actuelle datée du 2 juin 2023 à 09:36
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/