0% ont trouvé ce document utile (0 vote)
58 vues11 pages

Elasticsearch

Transféré par

Hichem Hamlaoui
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
58 vues11 pages

Elasticsearch

Transféré par

Hichem Hamlaoui
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Biware consulting

Extraction et insertion des données dans


Elasticsearch via Proc HTTP

Documentation

16 juin 2023
Table des matières

Table des matières


1 Elasticsearch et les Notions de base d’une base de donnée distribuée 2
1.1 Elasticsearch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2 Une base de données relationnelle VS Une base de données distribuée . . . 2
1.2.1 Base de données relationnelle : . . . . . . . . . . . . . . . . . . . . . 2
1.2.2 Base de données distribuée : . . . . . . . . . . . . . . . . . . . . . . 2

2 Comment consulter Elasticsearch en ligne ? 3

3 Comment charger des données (dans un fichier csv) dans elasticsearch ? 4

4 Comment extraire l’adresse http de la table


de donnée chargée ? 5

5 Comment extraire le « token » ? 5

6 Comment extraire les données de Elasticsearch via proc http ? 7

7 Comment insérer des données dans Elasticsearch via proc http ? 8

Documentation 1
1 Elasticsearch et les Notions de base d’une base de donnée distribuée

1 Elasticsearch et les Notions de base d’une base de


donnée distribuée
1.1 Elasticsearch
Elasticsearch est un moteur de recherche et d’analyse distribué gratuit et ouvert pour
toutes les données (textuelles, numériques, géospatiales, structurées et non structurées).
Elasticsearch a été conçu à partir d’Apache Lucene et a été lancé en 2010 par Elastic-
search N. V. (maintenant appelé Elastic). Réputé pour ses API REST simples, sa nature
distribuée, sa vitesse et sa scalabilité, Elasticsearch est le composant principal de la Suite
Elastic, un ensemble d’outils gratuits et ouverts d’ingestion de données, d’enrichissement,
de stockage, d’analyse et de visualisation. Couramment appelée la Suite ELK (pour Elas-
ticsearch, Logstash et Kibana), la Suite Elastic comprend désormais une riche collection
d’agents de transfert légers, appelés les agents Beats, pour envoyer des données à Elastic-
search.

1.2 Une base de données relationnelle VS Une base de données


distribuée
1.2.1 Base de données relationnelle :
— Structure : Une base de données relationnelle organise les données en tables, où
chaque table est composée de lignes (enregistrements) et de colonnes (attributs).
— Intégrité des données : Les bases de données relationnelles appliquent des
contraintes d’intégrité pour garantir la cohérence des données, telles que les clés
primaires, les clés étrangères et les contraintes d’intégrité référentielle.
— Langage : Les bases de données relationnelles utilisent généralement le langage
SQL (Structured Query Language) pour interroger et manipuler les données.
— Transactions : Les bases de données relationnelles prennent en charge les tran-
sactions ACID (Atomicité, Cohérence, Isolation, Durabilité), garantissant ainsi la
fiabilité des opérations de modification des données.

1.2.2 Base de données distribuée :


— Répartition des données : Une base de données distribuée répartit les données
sur plusieurs nœuds ou serveurs dans un réseau informatique. Chaque nœud détient
une partie des données.
— Évolutivité : La distribution des données permet d’ajouter facilement de nou-
veaux nœuds à la base de données, ce qui permet d’augmenter sa capacité de
stockage et de traitement.
— Tolérance aux pannes : En cas de panne d’un nœud, les autres nœuds de la
base de données distribuée peuvent continuer à fonctionner et à servir les requêtes,
assurant ainsi une haute disponibilité.
— Performance : Les bases de données distribuées peuvent répartir la charge de
travail sur plusieurs nœuds, ce qui peut améliorer les performances globales en
parallélisant les opérations de lecture et d’écriture.

Documentation 2
2 Comment consulter Elasticsearch en ligne ?

— Cohérence et disponibilité : Les bases de données distribuées peuvent être


configurées avec différents niveaux de cohérence et de disponibilité, en utilisant des
modèles de consistance tels que le modèle CAP (Consistency, Availability, Partition
tolerance).

BD relationnelle BD distribuée
Base de donnée Index
Table de données Type
Ligne Document

Table 1 – Notions de base

2 Comment consulter Elasticsearch en ligne ?


Pour consulter Elasticsearch en ligne il suffit de créer un compte :
— Cliquez ici pour consulter le site de Elasticsearch.
— Cliquez sur essai gratuit.
— Entrez l’adresse mail et le mot de passe puis remplissez le formulaire.
— Créez votre premier déploiement. Cette page apparaît.

Remarque : J’ai appelé mon premier déploiement « test ».

Documentation 3
3 Comment charger des données (dans un fichier csv) dans elasticsearch ?

3 Comment charger des données (dans un fichier csv)


dans elasticsearch ?
— Log in. Cette page apparaît.

— Cliquez sur « test ». Cette page apparait.

— Cliquez sur « Upload a file ».


— Cliquez sur « Select or drag and drop a file ».
— Cliquez sur « Import ».
— Entrez le nom de ton index.
— Cliquez sur « View index in discover» pour consulter la table chargée.

Documentation 4
5 Comment extraire le « token » ?

4 Comment extraire l’adresse http de la table


de donnée chargée ?

Cliquez sur ( En haut à gauche).

— Choisissez « Elasticsearch ».
— Cliquez sur « Manager ». (En haut a droite)
— Cliquez sur « Copy Endpoint » de « Elasticsearch ».

5 Comment extraire le « token » ?


Token(Jeton) est un élément d’authentification utilisé pour prouver l’identité d’un
utilisateur ou d’un système. Les tokens d’identification sont largement utilisés dans les
systèmes d’authentification et de sécurité pour vérifier l’identité des utilisateurs et contrô-
ler leur accès aux ressources.

Nous devons attacher ces jetons aux requêtes envoyées à Elasticsearch et les utiliser
comme identificateurs.

NB : Le Token change chaque 20 minutes.

Documentation 5
5 Comment extraire le « token » ?

— Dans la barre de recherche, saisissez « Console » puis cliquez sur « Dev tools/-
Console ».

— Exécutez la requête ci-dessous dans la console pour obtenir le token.

POST /_security/oauth2/token
{
"grant_type" : "client_credentials"
}

Documentation 6
6 Comment extraire les données de Elasticsearch via proc http ?

6 Comment extraire les données de Elasticsearch via


proc http ?
Proc http est une procédure dans SAS qui permet d’envoyer des requêtes http (Hyper-
text Transfer Protocol). Elle implémente également des fonctionnalités HTTP/1.1 telles
que les connexions persistantes, la mise en cache des cookies, la prise en charge
EXPECT_100_CONTINUE et fournit des spécifications sur les différents types d’au-
thentification.

Ci-dessous le code qui nous permet de se connecter à Elasticsearch et d’extraire les


données dans un fichier Json :

%let elasticsearch_url =elasticsearch_endpoint/nom_de_la_table/_search ;


filename resp "C:Documents/test.json";
%let token = t8jsAxZ5dkVOSlJqNVRTQ2M5YWJtNU1RLWpnAAAAAAAAAAAA;

proc http
url="&elasticsearch_url"
method="GET"
out=resp;
headers "Authorization"="Bearer &token";
run;

libname myfile json fileref=resp;

Elasticsearch_url : contient 3 parties :


— Elasticsearch endpoint : c’est l’adresse http de Elasticsearch.(4)
— Nom_de_la_table : c’est le nom de la table dans elasticsearch qu’on veut l’extraire
— _search : c’est une commande dédiée à la recherche des données dans Elasticsearch.
Exemple :

https://test-bbcc9c.es.us-central1.gcp.cloud.es.io/clients/_search;

Resp : Fichier json contient l’output de la requête.


Token : C’est la clé d’authentification.(5).

Documentation 7
7 Comment insérer des données dans Elasticsearch via proc http?

7 Comment insérer des données dans Elasticsearch via


proc http ?
Dans cette section on va donner un exemple pour mieux comprendre l’insertion des
données dans elsaticsearch via proc HTTP.
Nous avons une table clients dans elasticsearch contenant 3 lignes et 4 colonnes (
subscriber, msisdn, nom, prenom).

Figure 1 – La table Clients

Et nous avons d’autres clients dans une table SAS qu’on veut les insérer dans la tables
« clients » de Elasticsearch . L’idée est d’insérer les données ligne par ligne (Boucle).

Figure 2 – La table NewClients

Ci-dessous le code :

proc import datafile="C:Documents\Newclient.csv"


out=datatest
dbms=csv replace ;
delimiter=";";
run;

Documentation 8
7 Comment insérer des données dans Elasticsearch via proc http?

/* créer une macro variable "nombre" contenant le nombre de ligne


de la table datatest.*/

data _null_;
set datatest;
call symput("nombre",%sysfunc(compress(_N_)));
run;

%macro insert_table(n,newclients);

/* boucle pour parcourir la table newclients */


%do i = 1 %to &N;

/* la table onerow__&i. contient le i eme ligne de la table newclients.*/


data onerow__&i.;
set &newclients;
if _N_ in(&i.);
run;

filename json_in temp;


/* créer des macro variables contenant les valeurs des variables:
subscriber, msisdn, nom, prenom.*/

data _NULL_;
set onerow__&i.;
call symput("subscriber",subscriber);
call symput("msisdn",msisdn);
call symput("nom",nom);
call symput("prenom",prenom);
run;

filename json_in temp;

/* créer un fichier json "json_in" contenant les valeurs de chque variable.*/

data _null_;
file json_in;
put ’{"subscriber":’ %sysfunc(compress("&subscriber.")) ’,
"msisdn":’ %sysfunc(compress("&msisdn")) ’,
"Nom":"’ %sysfunc(compress("&nom")) ’",
"prenom":"’ %sysfunc(compress("&prenom")) ’"}’;
run;

Documentation 9
7 Comment insérer des données dans Elasticsearch via proc http ?

/*_doc : c’est une commande dédiée à l’insertion d’une ligne dans une table
Elasticsearch*/

/* resp_&i contient la réponse de la procédure http(succès ou échec de l’insertion


du i eme ligne)*/

%let elasticsearch_url = https://test-d72765.gcp.cloud.es.io/clients/_doc;


filename resp_&i. "C:/Documents/test&i..json";
%let token = 45XtAxZ5UXJQMGJiclNyT19jUTZmNTVwX253AAAAAAAAAAAA;

proc http
method="POST"
url="&elasticsearch_url"
ct="application/json"
in=json_in
out=resp_&i.;
headers "Authorization"="Bearer &token." ;
run;

%end;
%mend;

%insert_table(&Nombre,datatest);

A la fin , on exécute la commande « Get clients/_search » dans la console


de elasticsearch pour valider l’ajout des données.

Documentation 10

Vous aimerez peut-être aussi