ElasticSearch ou SolR : quelle est la différence ?
Popularité et accessibilité d’ElasticSearch : un avantage en comparaison avec SolR
ElasticSearch est la solution la plus populaire des deux. Elle le doit notamment à son éditeur qui dispose de capacités marketing et communication plus performantes. Ce sont plusieurs millions d’euros qui vont être consacré à son développement dans les prochaines années. Elle bénéficie en conséquence d’une meilleure documentation, plus facile d’accès, même pour les non techniciens et d’API plus développées qu’avec SolR. Une personne qui n’est pas familiarisée avec les problématiques de la recherche appréciera ce point.
Apache SolR dispose elle d’une large communauté “open source“, ce qui peut être un atout dans certains cas. La documentation technique est fouillée, mais sans doute moins accessible que pour Elasticsearch qui a vocation à s’adresser à un public qui n’est pas nécessairement expert des questions de recherche.
Elasticsearch est sans doute un peu mieux adapté pour rechercher rapidement des données qui évoluent fréquemment, tandis que SolR est plus efficace dans des entrepôts de données plus statiques. Elasticsearch est aussi plus adapté, nativement, pour une montée en charge rapide en cas de besoin. C’est ce que l’on nomme la “scalabilité“. Du fait de sa conception, SolR ne le permet qu’avec le recours au logiciel “Zookeeper”. Mais l’objectivité oblige à reconnaître que les deux solutions ne peuvent être départagées sur ce critère. Elles offrent un haut niveau de performance, et sont équivalentes pour peu qu’on les mette en œuvre dans les règles de l’art, sur une architecture bien dimensionnée.
Par ailleurs, les offres Saas proposées par Elasticsearch ou LucidWork apportent des réponses intéressantes pour garantir une montée en charge efficace.
Fonctionnalités : quelques différences entre Elasticsearch et SolR
Les fonctionnalités d’ElasticSearch et SolR sont assez proches… Ce qui est dû à leur origine commune, mais aussi au fait que la recherche interne obéit à une logique universelle. Les deux proposent des fonctions de vérification orthographiques, une gestion des synonymes, d’expressions exactes, de recherches boléennes, des fonctions de racinisation, de la recherche plein texte, l’agrégation des facettes… Les deux proposent des outils de machine learning, avec toutefois quelques différences d’approches : SolR embarque ainsi le projet Open NLP permettant de traiter le langage naturel, tandis qu’Elastic propose un composant dédié de machine learning capable de détecter et d’analyser en temps réel des anomalies.
On peut considérer SolR comme étant plus adapté à des contextes de recherche dans de larges silos de données non structurées, peu vivantes, tandis qu’Elastic fait merveille dans l’analyse de données en temps réel et plutôt structurées.
Voici un petit résumé des fonctionnalités de bases que l’on retrouve dans Solr et Elasticsearch :
- Indexation et recherche en fonction de la langue (découpage des mots, mots-vides, synonymes, élisions, …)
- Recherche par termes, par expressions, par requêtes booléennes en utilisant des wildcards
- Tri par pertinence
- Recherche et filtrage par facettes
- Recherche spatiale
- Suggestion de requêtes en cours de frappe (suggester)
- Correction orthographique (spellcheck)
- Recherche phonétique
- Recherche par similarité (more like this search)
- Mise en évidence dans les résultats des termes de la requête (highlighting)
- Indexation de texte brut mais également de documents dans des formats variés (PDF, Office, …)
- Mise en cluster des résultats
- Interface d’administration et de monitoring
Comment choisir alors entre Apache SolR et ElasticSearch ?
Une comparaison possible est : “SolR est comme Linux, Elastisearch est comme Windows”. Vous pouvez adapter plus facilement SolR à vos besoins, mais cela vous demandera plus de travail et plus de temps. Elasticsearch est rapide et facile à déployer, utiliser et mesurer. Elastic sera beaucoup plus simple à appréhender grâce à ses nombreuses API et ses outils natifs de clustering.
Elasticsearch est plutôt plus adapté à des contextes d’exploration de données structurées, en temps réel. Elastic, avec Kibana vous offre par ailleurs des outils intéressants de restitution graphique et analytiques de vos données. SolR sera plus adapté quand vous aurez besoin d’indexer des données plus statiques et moins structurées.
Conclusion
Elasticsearch et Apache Solr sont tous deux basés sur Lucene, mais ont été développés dans des offres indépendantes. De nombreux utilisateurs se demandent quel projet choisir. Même si Elasticsearch est un peu plus jeune et n’est pas supporté par la communauté Apache expérimentée contrairement à Solr, il compte maintenant plus d’utilisateurs. Ceci est principalement dû à la simplification de sa mise en œuvre. De plus, Elasticsearch est particulièrement populaire en raison de son traitement des données dynamiques : grâce à une procédure de mise en cache spéciale, Elasticsearch permet de ne pas avoir à saisir de modifications dans la totalité du cache global. Il suffit simplement de changer un petit segment. Ceci rend Elasticsearch plus flexible.
Cependant, le choix ne se fait en fin de compte souvent qu’en fonction des différentes approches de l’open source. Solr s’engage pleinement dans l’Apache Software Foundation : Community over Code. Chaque contribution apportée au code est prise au sérieux et la communauté décide ensemble des ajouts et des améliorations qui seront apportés au code final. Le développement d’Elasticsearch est différent : ce projet est également open source et est proposé sous une licence Apache gratuite, mais seule l’équipe d’Elasticsearch décide des changements pour le code. Face à ce comportement de gatekeeper, certains développeurs n’y adhèrent pas et préfèrent Solr.
Étiquette :Apache, Elastisearch, Linux, Moteur de recherche, Open Source, SolR