Aller au contenu principal

Récapitulation et examen final

Seize modules pour passer d'un LIKE '%mot%' à un moteur de recherche et de recommandation complet : Veille indexe 200 853 articles, les retrouve par pertinence et malgré les fautes, les analyse dans Kibana, relie 23 082 auteurs à 41 catégories dans Neo4j et recommande quoi lire ensuite depuis un script Python. Voici le cours condensé, les fils qui le traversent et la liste de contrôle d'un moteur prêt à être montré à un client.

Le cours d'un coup d'œil

ModuleL'essentiel à retenir
1. Kit Veilledoctor avant up ; up attend que chaque service réponde ; reset rend un état neuf. Kibana sur 5601, Neo4j Browser sur 7474, tout en veille2026.
2. Concepts clésUn index est découpé en shards, chaque shard peut avoir des répliques ; un nœud unique est green avec zéro réplique ; _cat et _cluster/health se lisent en premier.
3. Documents et _bulkPUT crée ou remplace, POST _update fusionne, _seq_no/_primary_term protègent des écrasements ; _bulk = NDJSON, deux lignes par document, lots de 1 000 à 5 000.
4. Mappingtext est analysé pour la recherche, keyword est exact pour filtrer, trier et agréger ; le mapping dynamique devine, le mapping explicite décide ; changer un type = _reindex.
5. Query DSLmatch pour le texte, term pour l'exact, range pour les dates ; bool combine must, should, filter, must_not ; le contexte filtre ne calcule pas de score et se met en cache.
6. Agrégationssize: 0 ; terms, date_histogram avec calendar_interval, cardinality, stats, top_hits ; les sous-agrégations répondent aux questions croisées (catégories par année).
7. KibanaData View avec champ temporel date et plage 2012-2018 ; Discover + KQL pour explorer ; Lens pour visualiser ; un tableau de bord s'exporte en .ndjson.
8. Recherche avancéecompletion sur headline.suggest (max_input_length 120), fuzziness: AUTO, phrase suggester ; ES|QL enchaîne FROM, WHERE, STATS … BY, SORT ; les alias permettent de réindexer sans interruption.
9. OpenSearchFork d'Elasticsearch 7.10 sous Apache 2.0 depuis 2021 ; mêmes requêtes de base, sécurité et plugins différents ; choisir selon licence, hébergeur et fonctions, pas selon la mode.
10. Neo4j et CypherNœuds, étiquettes, relations orientées et typées, propriétés ; MATCH (a)-[:REL]->(b) lit le graphe comme on le dessine ; MERGE plutôt que CREATE pour rejouer sans doublon.
11. Modéliser et chargerCe qu'on filtre ou traverse devient nœud, ce qu'on affiche reste propriété ; contraintes d'unicité d'abord ; LOAD CSV + CALL { } IN TRANSACTIONS (avec :auto dans Browser).
12. Cypher avancéChemins *1..3, shortestPath, OPTIONAL MATCH, WITH/collect/UNWIND, CASE ; la recommandation par voisinage tient en une requête ; PROFILE révèle les index manquants et les produits cartésiens.
13. Python./lab.sh python exécute vos scripts avec les clients officiels ; Elasticsearch(url, basic_auth) et GraphDatabase.driver(uri, auth) ; veille.py combine recherche et recommandation.
14. Sécurité et exploitationUtilisateurs et rôles _security, clés d'API, snapshots fs avec path.repo ; Neo4j Community gère des utilisateurs mais pas de rôles fins ; _cat/nodes et docker stats en surveillance.
15. DiagnosticDouze pannes, une méthode : statut, journaux, isoler, réinitialiser, demander de l'aide avec les bonnes informations.
16. Projet VeilleMapping justifié, cinq requêtes par persona, tableau de bord à quatre visualisations, graphe vérifié, cinq requêtes de recommandation, script combiné, démonstration en cinq minutes.

Les fils qui traversent le cours

Le mapping décide de tout ce qui vient après. Une catégorie en text ne s'agrège pas proprement, un titre en keyword ne se cherche pas, une date en chaîne ne se trie pas. Le module 4 pose la règle, les modules 5 à 8 en vivent : chaque requête qui « ne trouve rien » ou chaque agrégation qui « renvoie des morceaux de mots » se corrige dans le mapping, donc par un _reindex, jamais en tordant la requête.

Chercher et filtrer sont deux opérations différentes. Le contexte requête calcule un score et coûte cher ; le contexte filtre répond oui ou non et se met en cache. Mettre category et date dans filter et garder headline dans must n'est pas une coquetterie : c'est ce qui rend le moteur de Veille rapide sous charge. Kibana applique la même séparation entre la barre KQL et les filtres épinglés.

Le graphe répond aux questions que les jointures rendent illisibles. Qui écrit dans les mêmes catégories que Lee Moran ? Quels articles récents des auteurs de ce résultat ? Quelle chaîne relie deux auteurs ? En SQL, chaque niveau de profondeur ajoute une jointure ; en Cypher, *1..3 suffit. Elasticsearch trouve le point d'entrée, Neo4j explore autour : le module 13 les combine dans un même script, le module 16 en fait un produit.

Une panne se lit avant de se réparer. Code de sortie 137, cluster_block_exception, « Couldn't load the external resource », « can only be executed in an implicit transaction » : chaque message du module 15 correspond à une cause unique et à une commande du kit. Le réflexe à acquérir n'est pas de relancer au hasard mais de lire ./lab.sh status puis ./lab.sh logs <service>.

Liste de contrôle d'un moteur Veille prêt à démontrer

  • ./lab.sh doctor tout vert, ./lab.sh status affiche trois conteneurs healthy.
  • GET news/_count renvoie 200 853 et GET news/_mapping montre category en keyword, headline en text avec raw et suggest, date en date.
  • Une requête bool par persona, avec headline dans must et category + date dans filter, chacune commentée (ce qu'elle cherche, pourquoi ce score).
  • Une agrégation terms sur category et une date_histogram par mois, dont les chiffres correspondent à ceux du tableau de bord Kibana.
  • Une Data View news avec le champ temporel date, un tableau de bord à quatre visualisations exporté en .ndjson dans le dossier du projet.
  • Une requête d'autocomplétion sur headline.suggest et une recherche tolérante aux fautes avec fuzziness: AUTO.
  • CALL apoc.meta.stats() renvoie 200 853 Article, 41 Categorie, 23 082 Auteur ; SHOW CONSTRAINTS liste les trois contraintes d'unicité.
  • Cinq requêtes Cypher de recommandation, dont une par voisinage d'auteurs et une par chemin, chacune passée au PROFILE sans produit cartésien.
  • ./lab.sh python veille.py <sujet> renvoie des résultats et des recommandations en moins de cinq secondes, avec un filtre de catégorie et de période.
  • Un utilisateur Elasticsearch en lecture seule pour l'API de Karim et un snapshot de l'index news restaurable.
  • Le tableau des douze pannes relu, et la certitude de savoir quoi faire devant chacune.

L'examen final

L'examen comporte 40 questions couvrant les seize modules : kit et concepts, documents et _bulk, mapping et analyseurs, Query DSL et pertinence, agrégations, Kibana, autocomplétion et ES|QL, OpenSearch, Cypher et modélisation, LOAD CSV, Cypher avancé, Python, sécurité et sauvegardes, diagnostic, projet.

Plusieurs questions présentent des situations à diagnostiquer : quel type de champ choisir pour une catégorie qu'on veut agréger ; pourquoi une requête match sur un keyword ne renvoie rien ; que signifie un cluster yellow sur un nœud unique ; comment lire un cluster_block_exception ; pourquoi LOAD CSV ne trouve pas news.csv ; quelle différence entre MERGE et CREATE quand on rejoue un script ; quel moteur choisir pour telle question métier. C'est le jugement qui est évalué — nommer la cause, choisir la requête ou la commande adaptée — pas la récitation d'un vocabulaire.

En cas de réussite, votre attestation d'achèvement est délivrée immédiatement ; son numéro est vérifiable par tout tiers sur la plateforme.

Avant de commencer

Reprenez la liste de contrôle ci-dessus. Pour chaque ligne, demandez-vous « saurais-je écrire la requête ou la commande qui la vérifie ? ». Si vous savez rédiger un bool avec must et filter, une date_histogram, une contrainte d'unicité suivie d'un LOAD CSV par lots et une requête de recommandation par voisinage, vous êtes prêt. Bonne chance !

Examen final

Prêt à valider ce cours ?

40 questions tirées au hasard dans la banque du cours · seuil de réussite 70 % · certificat PDF vérifiable délivré immédiatement en cas de réussite.

Commencer l'examen

Connexion à votre compte InSkillML et abonnement actif requis. Vous pouvez aussi lancer l'examen depuis Mes cours.