Quelle est la différence entre Lucene et Elasticsearch

139

Je sais qu'ElasticSearch est basé sur Apache Lucene mais je veux connaître les différences significatives entre les deux.

Satish Madiwal
la source

Réponses:

219

Lucene est une bibliothèque Java . Vous pouvez l'inclure dans votre projet et faire référence à ses fonctions à l'aide d'appels de fonction.

ElasticSearch est un JSON basé, distribué , serveur Web intégré sur Lucene. Bien que ce soit Lucene qui fasse le travail en dessous, Elasticsearch nous fournit une couche pratique sur Lucene. Chaque partition créée dans Elasticsearch est une instance Lucene distincte. Donc pour résumer

  1. Elasticsearch est construit sur Lucene et fournit une API REST basée sur JSON pour faire référence aux fonctionnalités de Lucene.
  2. Elasticsearch fournit un système distribué au-dessus de Lucene . Un système distribué n'est pas quelque chose dont Lucene est conscient ou conçu pour. Elasticsearch fournit cette abstraction de la structure distribuée.
  3. Elasticsearch fournit d'autres fonctionnalités de support telles que le pool de threads, les files d'attente, l'API de surveillance des nœuds / clusters, l'API de surveillance des données, la gestion des clusters, etc.
Vineeth Mohan
la source
1
Y a-t-il une différence entre les deux concernant le DataStore?
AlikElzin-kilaka
Qu'en est-il du magasin de données?
Rookian
10
Je ne sais pas si cela répond à votre question sur DataStore, mais chaque nœud Elasticsearch contient des fragments. Un seul index Elasticsearch est réparti sur les nœuds à l'aide de fragments. Chaque fragment contient une partie des documents de l'index Elasticsearch. Chacun de ces fragments est une instance de Lucene. Ainsi, à la racine, toutes les données sont stockées dans Lucene et Elasticsearch gère les interactions.
Airn5475
32

En plus des mots de @Vineeth Mohan :

Haute disponibilité: Elasticsearch est distribué afin de pouvoir gérer la réplication des données, ce qui signifie avoir plusieurs copies de données dans votre cluster. Cela permet une haute disponibilité.

Puissant requête DSL : Elasticsearch nous offre une interface JSON pour lire et écrire des requêtes sur Lucene. Grâce à Elasticsearch, vous pouvez écrire des requêtes complexes sans connaître la syntaxe Lucene.

Sans schéma (sans schéma): les champs (nom, paires de valeurs) pour schemane doivent pas être définis auparavant. Lorsque vous indexez des données, elasticsearch peut créer un schéma automatiquement au moment de l'exécution, comme par magie.

fgul
la source
0

Je vais répondre du point de vue de l'utilisation.

Lucene est une bibliothèque de moteurs de recherche . Vous voudriez l'utiliser pour créer votre propre moteur de recherche: soit un nouveau concurrent Elasticsearch ou Solr, soit quelque chose de restreint pour votre cas d'utilisation (par exemple, l'analyse de texte).

Elasticsearch est un moteur de recherche . La plupart des gens l'utilisent pour l'agrégation de journaux, la recherche de produits ou une variante des deux (par exemple, l'analyse des médias sociaux ou la recherche de personnes pertinentes pour certains critères de recherche). Il est construit sur Lucene, il expose donc la plupart (mais pas toutes) de ses fonctionnalités . Cela ajoute également beaucoup de choses, surtout:

  • API REST
  • requête DSL
  • système distribué (partitionnement, réplication, gestion de cluster)
  • facettes / agrégations
  • des fonctionnalités supplémentaires pour un usage courant (par exemple, le traitement de l' acquisition ) et la gestion (API pour surveiller ses métriques pertinentes , sauvegarde et restauration, etc.)
Radu Gheorghe
la source