Skip to content
Snippets Groups Projects
Commit 845038a8 authored by Anh.Nguyen2's avatar Anh.Nguyen2
Browse files

TP

parent 7d992aae
No related branches found
No related tags found
No related merge requests found
......@@ -231,4 +231,55 @@ Résultat attendu
#### Q9. Calculer la proportion de personnes dont le solde est strictement inférieur à 1000
(pas sur pour cette question)
## Partie 2 : API Elasticsearch
## Partie 2 : Elasticsearch Client sur Python
Pour cette partie là, on exploitera comment intéragir avec Elasticsearch sur Python. Vous pouvez utiliser IDE comme vous voulez.
**Note** : à part d'Elasticsearch, d'ici, on a également besoin de librairie pandas
#### Q1. Installer Elasticsearch, importer dans Python
>pip3 install elasticsearch
Dans votre script python :
>import elasticsearch
from elasticsearch import Elasticsearch
Voir la version elasticsearch :
>print (elasticsearch.VERSION)
D'ici, j'utilise la version 8.6.0
#### Q2. Connecter avec le server Elasticsearch
>ELASTIC_PASSWORD = {Votre password}
client = Elasticsearch(
"https://localhost:9200",
ca_certs="path/vers/http_ca.cert",
basic_auth=("elastic", ELASTIC_PASSWORD)
)
Il faut checker si tout va bien en lancant :
> client.info()
La réponse doit rassemble à cela :
![attendu2](/images/connectapipython.PNG)
Vous pouvez également prendre les données qu'on a créé dans la 1ère partie :
> client.search(index='customer',body={"query": {"match_all": {}}})
#### Q3. Traitement les données
Pour la suite de TP, nous vous donnons un dataset qui est les tweets qui ont hashtag #Farmersprotest. Dans cette question, nous avons besoin de nettoyer les données avant injecter dans Elasticsearch
#### 3.1. Lire les données au format JSON
Hint: Utiliser pandas.read_json('/path/des/données',lines=True)
#### 3.2. Filtrer
Nous n'utilisons que les tweets en Anglais et nous ne voulons pas de doublons. En plus, il n'y a que les colonnes : id, date, user, renderedContent qui nous servirons pour la suite. Renommer le champ id -> tweetID pour distinguer. La table résultant appelé raw_tweets
Appeler la fonction head() pour voir les résultats
#### 3.3. Flatten nested champ
Nous voyons que le champ "user" est nested, essayons de créér un table à partir de ce champ. Supprimer de doublons. Nous ne gardons que les colonnes : id, location. Renommer le champ id -> userID pour distinguer. La table résultant appelé users
Hint: Utiliser pandas.json_normalize, il faut importer avant utiliser
#### 3.4. Créer la table finale
La table finale appelé "tweets" est créé en mergent les 2 tables précédentes.
#### Q4. Injection les données dans Elasticsearch
## Partie 3 : Agrégation de données et visualisation dans Kibana
images/connectapipython.PNG

14.2 KiB

0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment