Elasticsearch / Vespa
Contactez-moi- Elasticsearch
- Vespa
Elasticsearch et Vespa sont deux moteurs de recherche distribués conçus pour interroger de très gros volumes de données en quelques millisecondes. Elasticsearch, construit sur Apache Lucene, excelle en recherche plein texte, agrégations et analytique de logs. Vespa, développé à l’origine par Yahoo, cible plutôt le “serving” temps réel combinant recherche et recommandation à grande échelle, avec un moteur de ranking natif très flexible.
Historique
Elasticsearch est lancé en 2010 par Shay Banon, qui prolongeait un projet personnel de moteur de recherche distribué (Compass) au-dessus de Lucene. Il donne naissance à la société Elastic et à la “stack ELK” (Elasticsearch, Logstash, Kibana). Vespa naît chez Yahoo pour ses besoins internes de recherche et de recommandation à très grande échelle, avant d’être open-sourcé en 2017.
Avantages
| Elasticsearch | Vespa |
|---|---|
| Recherche vectorielle native depuis la 8.x (kNN, embeddings) pour la recherche sémantique et hybride | Moteur tensoriel natif depuis l’origine, pensé pour le ranking par embeddings et l’ANN |
| ES|QL (8.11+) : langage de requête piping proche du SQL, simplifie l’analyse directement dans le moteur | Modèle de ranking multi-phases très flexible (first-phase / second-phase), calculs de scoring arbitraires en Java ou en expressions natives |
| Sécurité activée par défaut depuis la 8.0 (chiffrement, authentification), réduisant les erreurs de configuration exposant un cluster | Conçu dès le départ pour du “serving” temps réel à très forte volumétrie (cas Yahoo), latences p99 maîtrisées sous charge |
| Écosystème très large (stack ELK, Kibana, énorme communauté, nombreux clients et intégrations) | Combine dans un seul moteur recherche, recommandation et calcul de features, évitant d’empiler plusieurs briques |
| Prise en main plus rapide, documentation abondante, nombreux tutoriels et retours d’expérience | Mises à jour de documents partielles et en temps réel très performantes, adaptées aux flux (prix, stocks, scores qui changent en continu) |
| Recherche hybride (BM25 + similarité vectorielle) en une seule requête, désormais natif des deux moteurs | Idem : recherche hybride native, avec un contrôle plus fin de la fonction de ranking |
Inconvénients
| Elasticsearch | Vespa |
|---|---|
| Modèle de ranking par défaut (BM25 + boosts) plus rigide pour des cas de scoring complexes sur-mesure | Courbe d’apprentissage nettement plus raide : configuration XML/JSON dense, concepts propres (schemas, rank profiles, content clusters) |
| Consommation mémoire (JVM/heap) et gestion du garbage collector à surveiller sur les gros clusters | Communauté et écosystème plus restreints qu’Elastic, moins de tutoriels et de prestataires disponibles |
| Modèle de licence (SSPL puis retour partiel à l’open source) source d’incertitude pour certains projets | Documentation plus technique, orientée cas d’usage Yahoo/Verizon historiques, moins accessible aux débutants |
| Moins optimisé nativement pour les mises à jour partielles très fréquentes de documents | Outillage d’administration et de monitoring moins mature que Kibana |
| Recommandation et ranking avancés nécessitent souvent des plugins ou services externes | Déploiement et exploitation plus complexes (configuration de cluster, “application package” à empaqueter et déployer) |
Dans mes projets
Elasticsearch est le moteur des comparateurs de prix (catalogue produits et marques, avec Vespa en moteur alternatif) et de MaStationService (prix horaires et recherche géographique). Son exploitation passe par des tableaux de bord Kibana.