diff --git a/README.md b/README.md index 33447cf463a1373a2833a2a1ff2bcffb8bca1e2b..729694377e388f163caf085505703ffa47ab0901 100644 --- a/README.md +++ b/README.md @@ -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 : + + + +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 diff --git a/images/connectapipython.PNG b/images/connectapipython.PNG new file mode 100644 index 0000000000000000000000000000000000000000..88895be5e4d721c979d8126333ee602d6409cde7 Binary files /dev/null and b/images/connectapipython.PNG differ