9. Les ingrédients nécessaires :
● Elasticsearch, un contenant
○ https://www.elastic.co/fr/downloads/elasticsearch
● Kibana, une interface
○ https://www.elastic.co/fr/downloads/kibana
● Postman, pour mesurer
○ https://www.getpostman.com/downloads/
● Python, pour mélanger
○ https://github.com/elastic/elasticsearch-py
● OpenFoodFacts, des données
○ https://world.openfoodfacts.org/cgi/search.pl
10. D’abord la mise en place
1. Télécharger Elasticsearch et Kibana et les dézipper
2. Lancer Elasticsearch
a. cd /elasticsearc/bin
b. ./elastic
c. GET http://localhost:9200
3. Lancer Kibana
a. cd kibana/bin
b. ./kibana
c. GET http://localhost:5601
4. Installer la librairie python pour Elasticsearch
a. pip install elasticsearch
5. Et bien connaître son JSON
a. https://www.json.org/json-fr.html
12. https://fr.wikipedia.org/wiki/JavaScript_Object_Notation
JavaScript Object Notation (JSON) est un format de données textuelles dérivé de
la notation des objets du langage JavaScript. Il permet de représenter de
l’information structurée comme le permet XML par exemple. Créé par Douglas
Crockford entre 2002 et 2005, il est actuellement décrit par deux normes en
concurrence : RFC 8259 [archive] de l’IETF et ECMA-4041 de l'ECMA.
Des bibliothèques pour le format JSON existent dans la plupart des langages de
programmation.
15. Une procédure en 3 étapes, comme pour l’ETL
1. Ingérer
2. Transformer
3. Consommer
16. Ingérer
● Importation d’un fichier CSV ou JSON
● Avec le protocole HTTP
○ CURL, WGET
○ POSTMAN
● Avec Python un document à la fois
● Avec Python en lot avec le mode bulk
17. Transformer
● En python avec un itérateur
○ ou tout autre langage
● Avec Logstash (le L de ELK)
● Avec le langage Painless
● Avec un ETL supportant JSON
● Comme bon vous semble via des requêtes
REST
18. Consommer
● En construisant un tableau de bord avec
Kibana
● En utilisant les services APIs REST/JSON
d’Elasticsearch
● En construisant vos propres APIs
● En développant une application mobile ou
HTML5 qui consomme les services REST
20. https://fr.wikipedia.org/wiki/NoSQL
En informatique et en bases de données, NoSQL désigne une famille de
systèmes de gestion de base de données (SGBD) qui s'écarte du paradigme
classique des bases relationnelles. L'explicitation du terme la plus populaire de
l'acronyme est Not only SQL (« pas seulement SQL » en anglais) même si cette
interprétation peut être discutée.
L'architecture machine en clusters induit une structure logicielle distribuée
fonctionnant avec des agrégats répartis sur différents serveurs permettant des
accès et modifications concurrentes mais imposant également de remettre en
cause de nombreux fondements de l'architecture SGBD relationnelle
traditionnelle, notamment les propriétés ACID.
22. https://fr.wikipedia.org/wiki/Extract-transform-load
Extract-transform-load est connu sous le sigle ETL, ou extracto-chargeur, (ou
parfois : datapumping). Il s'agit d'une technologie informatique intergicielle
(comprendre middleware) permettant d'effectuer des synchronisations massives
d'information d'une source de données (le plus souvent une base de données)
vers une autre. Selon le contexte, on est amené à exploiter différentes fonctions,
souvent combinées entre elles : « extraction », « transformation », « constitution »
ou « conversion », « alimentation ».
23. https://fr.wikipedia.org/wiki/Elasticsearch
Elasticsearch est un serveur utilisant Lucene pour l'indexation et la recherche des
données. Il fournit un moteur de recherche distribué et multi-entité à travers une
interface REST. C'est un logiciel libre écrit en Java et publié en open source sous
licence Apache.
Elasticsearch est le serveur de recherche d'entreprise le plus populaire, suivi par
Apache Solr qui utilise aussi Lucene. Il est associé à deux autres produits libres,
Kibana et Logstash, qui sont respectivement un visualiseur de données et un ETL
(initialement destiné aux logs).
L'indexation des données s'effectue à partir d'une requête HTTP PUT. La
recherche des données s'effectue avec la requête HTTP GET. Les données
échangées sont au format JSON.
24. https://fr.wikipedia.org/wiki/Big_data
Le big data (litt. « grosses données » en anglais), les mégadonnées ou les
données massives, désigne des ensembles de données devenus si volumineux
qu'ils dépassent l'intuition et les capacités humaines d'analyse et même celles des
outils informatiques classiques de gestion de base de données ou de l'information.
Dimensions :
1. Volume
2. Variété
3. Vélocité
25. https://fr.wikipedia.org/wiki/Representational_state_transfer
REST (representational state transfer) est un style d'architecture logicielle
définissant un ensemble de contraintes à utiliser pour créer des services web. Les
services web conformes au style d'architecture REST, aussi appelés services web
RESTful, établissent une interopérabilité entre les ordinateurs sur Internet.
D'autres types de services web tels que les services web SOAP exposent leurs
propres ensembles d'opérations arbitraires.
Dans un service web REST, les requêtes effectuées sur l'URI d'une ressource
produisent une réponse dont le corps est formaté en HTML, XML, JSON ou un
autre format. Lorsque le protocole HTTP est utilisé, comme c'est souvent le cas,
les méthodes HTTP disponibles sont GET, HEAD, POST, PUT, PATCH, DELETE,
CONNECT, OPTIONS et TRACE.
29. Data structure
Index (SQL) Inverted index (Elasticsearch)
Doc Words inside document
A
crow, tree, cheese, fox, french,
book, toaster, stick...
B
brown, dog, jump, over, lazy, fox,
asleep, cheese, tree,...
Word (Document, position)
crow (A,0)
tree [(A,1), (B,8)]
cheese [(A,2), (B,7)]
fox [(A,3), (B,5)]
... ...
30. Tokenization
"Sports bikes under the $1000 RR"
⇓
"sport, bike, under, dollar, 1000, race ready"
Operation Before After
Stemming (root) curves curve
Stop words filtering the
Text normalization $ dollar
Synonym expansion AUR area under curve
35. 1. Analyse de logs web (Démo de Kibana)
2. Visualisation de logs système produits par Metricbeat sur
un serveur ES
3. Comment mange-t-on les pommes au Québec ?
a. La réponse avec ES/Kibana en utilisant les données
ouvertes d’Open Food Facts.
4. Le projet Kibio.science