Lorsqu’il s’agit de moteurs de recherche open source, Solr et Elasticsearch sont toujours à la pointe des tests et des enquêtes. Et les deux serveurs de recherche sont basés sur la bibliothèque Apache Java Lucene. Lucene est évidemment une base solide. La bibliothèque indexe les informations de manière flexible et fournit rapidement des réponses à des requêtes de recherche complexes. Sur cette base, les deux moteurs de recherche fonctionnent de manière concluante. Chacun des projets est soutenu par une communauté active.
L’équipe de développement autour d’Elasticsearch travaille avec GitHub, tandis que Solr est rattaché à la Fondation Apache. En comparaison, le projet Apache peut s’appuyer sur une longue expérience et un historique développé. Et la communauté active a documenté tous les changements, fonctionnalités et bugs depuis 2007. La documentation d’Elasticsearch est loin d’être aussi complète, ce qui peut être critiqué. Cependant, Elasticsearch n’est pas nécessairement en retard par rapport à Apache Solr en termes de facilité d’utilisation.
Avec Elasticsearch vous construisez votre bibliothèque en quelques étapes. Pour des fonctions supplémentaires, vous avez besoin de plugins premium. Cela vous permet de gérer les paramètres de sécurité, de surveiller le serveur de recherche ou d’analyser les mesures. Le serveur de recherche rassemble également une famille de produits bien coordonnée autour de lui. Dans la rubrique Elastic-Stack et X-Pack vous obtenez gratuitement quelques fonctions de base. Les forfaits premium ne sont disponibles qu’avec un abonnement mensuel - avec une licence par nœud. Solr, d’autre part, est toujours gratuit, y compris les extensions comme Tika et Zookeeper.
Les deux moteurs de recherche diffèrent le plus dans leur orientation. Solr et Elasticsearch peuvent être utilisés aussi bien pour de petits ensembles de données que pour de grands ensembles, qui sont réparties sur plusieurs environnements. Mais Solr se concentre sur la recherche de texte. Le concept d’Elasticsearch, d’autre part, combine recherche et analyse. Les métriques et les logs sont traités par le servlet depuis le début. Elasticsearch traite facilement les quantités de données correspondantes. Parce que le serveur intègre dynamiquement les cœurs et les fragments, depuis la première version.
Elasticsearch a déjà eu une longueur d’avance sur son concurrent Solr, mais depuis quelques années, le Solr Cloud a également permis la classification des facettes. Pour les données dynamiques, Elasticsearch est encore légèrement en avance. En retour, le concurrent marque des points concernant les données statiques. Il fournit des résultats ciblés pour la recherche en plein texte et calcule les données avec précision.
Les différents concepts de base sont également reflétés dans la mise en cache. Les deux fournisseurs offrent la mise en cache des requêtes par principe. Si une requête utilise des variables booléennes complexes, les deux stockent les éléments d’index appelés dans des segments. Ceux-ci peuvent fusionner en segments plus grands. Cependant, si un seul segment change, Apache Solr doit invalider tout le cache global et le recharger. Elasticsearch limite ce processus au sous-segment affecté. Cela permet d’économiser de l’espace disque et du temps.
Si vous travaillez régulièrement avec XML, HTTP et Ruby, vous vous habituerez également à Solr sans aucun problème. JSON, d’autre part, a été ajouté plus tard via une interface. C’est pourquoi le langage et le servlet ne s’accordent pas encore parfaitement. Elasticsearch d’autre part communique nativement via JSON. Le serveur de recherche intègre d’autres langages comme Python, Java, .NET, Ruby et PHP avec une interface similaire à REST.