This post also exists in English.
Chaque année, le Père Noël est confronté au même problème de mise à l'échelle :
Des milliards d'enfants, une seule fenêtre de livraison, aucune marge d'erreur.
Pendant des siècles, il a tout géré avec des parchemins, une plume et un lutin extrêmement surmené. Cette année, le Père Noël a décidé de moderniser l'intégralité de son infrastructure des enfants sages.
Adieu les parchemins, adieu la base de données monolithique du Pôle Nord construite à base d'espoirs et de sucre d’orge.
Bienvenue Elasticsearch.
Avec de grands clusters vient un grand besoin de… ligne de commande.
Heureusement pour lui, les lutins ont trouvé une CLI prometteuse sur GitHub et l'ont intégrée directement dans l'ordinateur de bord du traîneau :
Pourquoi le Père Noël avait besoin d'une bonne CLI
Les tableaux de bord Kibana sont excellents, à moins que vous ne voyagiez à Mach 8 au-dessus de Tokyo auquel cas vous ne devriez vraiment pas cliquer sur des boutons avec des moufles.
Le Père Noël avait donc besoin de quelque chose :
-
rapide
-
scriptable
-
compatible avec les moufles
Voici escli, une preuve de concept de CLI Elasticsearch qui prend en charge plusieurs versions, une authentification sécurisée, une auto-complétion de shell, et assez de fonctionnalités pour sauver Noël.
Les lutins ont configuré le fichier .env du Père Noël avec :
ESCLI_URL=https://polenord.elasticsearch.cluster
ESCLI_API_KEY=ho-ho-ho-secret
Un Cluster Rempli d'Enfants
L'accès au cluster étant désormais établi, les lutins ont procédé à l'ajout de quelques enfants.
{"index": {"\_index": "children-of-the-world", "\_id": "zoe-8yo-france"}}
{"name": "Zoe", "age": 8, "nice_score": 0.92, "gift_preference": "Lego Friends", "cookie_offerings": 5, "sibling_conflicts": 1}
{"index": {"\_index": "children-of-the-world", "\_id": "jai-10yo-india"}}
{"name": "Jai", "age": 10, "nice_score": 0.75, "gift_preference": "Cricket bat", "cookie_offerings": 2, "sibling_conflicts": 4}
{"index": {"\_index": "children-of-the-world", "\_id": "mia-6yo-canada"}}
{"name": "Mia", "age": 6, "nice_score": 0.98, "gift_preference": "Stuffed bear", "cookie_offerings": 10, "sibling_conflicts": 0}
{"index": {"\_index": "children-of-the-world", "\_id": "lucas-11yo-usa"}}
{"name": "Lucas", "age": 11, "nice_score": 0.33, "gift_preference": "RC car", "cookie_offerings": 1, "sibling_conflicts": 7}
{"index": {"\_index": "children-of-the-world", "\_id": "sofia-9yo-spain"}}
{"name": "Sofia", "age": 9, "nice_score": 0.87, "gift_preference": "Art supplies", "cookie_offerings": 4, "sibling_conflicts": 2}
escli bulk --refresh wait_for --input children_of_the_world.ndjson
La configuration Elasticsearch du Père Noël est maintenant prête au décollage avec les éléments essentiels :
-
Index : children-of-the-world
-
Champs : name, age, nice_score, gift_preference, cookie_offerings, sibling_conflicts
Et maintenant, grâce à escli, le Père Noël peut interroger le cluster depuis n'importe où sur Terre. Même en plein vol.
De Vraies commandes utilisées par le Père Noël
Obtenir les informations d'un seul d'enfant
escli get children-of-the-world "zoe-8yo-france"
Rechercher les enfants vraiment sages
echo '
{
"query": {
"range": {
"nice_score": {"gte": 0.9}
}
}
}' | escli search \\
--index children-of-the-world | jq
Exporter la liste des enfants les moins sages au format CSV
echo '{
"query": "FROM children-of-the-world | WHERE nice_score < 0.2"
}' | escli esql query --format csv
Pour éviter que l'exportation manuelle de cette liste ne perturbe leurs réunions de décembre, les lutins ont finalement automatisé le processus.
Heureusement, la liste était vide cette année, car tout le monde a été sage.
Auto-Complétion : La Nouvelle Fonctionnalité Préférée du Père Noël
L'une des fonctionnalités les plus intéressantes d'escli est l'auto-complétion du shell.
Pour installer les complétions :
eval "$(COMPLETE=bash ./escli)"
Maintenant, en tapant:
escli esql q<TAB>
son terminal l'étend à :
escli esql query
Même les rennes sont impressionnés.
Noël Sauvé par --help
Le Père Noël, ayant à mémoriser un nombre quasi infini d'options d'API à travers son vaste réseau logistique, oubliait parfois un ou deux flags. Il n'en avait pas honte. Il utilisait joyeusement le flag –help pour se rafraîchir rapidement la mémoire.
escli --help
-
Commandes documentées.
-
Structure cohérente.
-
Aucune surprise.
Les lutins ont même résisté à l'envie d'ajouter un ASCII art (après un petit « incident de crise terminale »).
Le Père Noël a fait défiler l'aide, a souri et a murmuré « C'est complètement dingue ! » et a livré des milliards de cadeaux juste à temps.
Si c'est Assez Bon pour le Père Noël…
…alors c'est peut-être assez bon pour votre cluster Elasticsearch aussi.
Téléchargez la dernière version en pre-release aujourd'hui depuis le dépôt escli-rs et essayez-la.
Nous aimerions avoir votre avis: ouvrez une issue sur GitHub et dites nous ce que vous en pensez !
