Qual è la differenza tra Lucene ed Elasticsearch


139

So che ElasticSearch è basato su Apache Lucene, ma voglio conoscere le differenze significative tra i due.

Risposte:


217

Lucene è una libreria Java . Puoi includerlo nel tuo progetto e fare riferimento alle sue funzioni usando le chiamate di funzione.

Elasticsearch è un server Web basato su JSON , distribuito , costruito su Lucene. Sebbene sia Lucene che sta facendo il vero lavoro di seguito, Elasticsearch ci fornisce un comodo livello su Lucene. Ogni frammento che viene creato in Elasticsearch è un'istanza Lucene separata. Quindi per riassumere

  1. Elasticsearch è basato su Lucene e fornisce un'API REST basata su JSON per fare riferimento alle funzionalità di Lucene.
  2. Elasticsearch fornisce un sistema distribuito su Lucene . Un sistema distribuito non è qualcosa di cui Lucene è a conoscenza o per cui è stato costruito. Elasticsearch fornisce questa astrazione della struttura distribuita.
  3. Elasticsearch offre altre funzionalità di supporto come pool di thread, code, API di monitoraggio nodo / cluster, API di monitoraggio dati, Gestione cluster, ecc.

1
C'è una differenza tra entrambi per quanto riguarda il DataStore?
AlikElzin-Kilaka,

E l'archivio dati?
Rookian

10
Non sono sicuro che questo risponda alla tua domanda su DataStore, ma ogni nodo Elasticsearch contiene frammenti. Un singolo indice Elasticsearch è distribuito su tutti i nodi usando i frammenti. Ogni frammento contiene una parte dei documenti nell'indice Elasticsearch. Ognuno di questi frammenti è un'istanza di Lucene. Quindi, alla radice, tutti i dati sono archiviati in Lucene ed Elasticsearch gestisce le interazioni.
Airn5475,

32

Oltre alle parole di @Vineeth Mohan :

Alta disponibilità: Elasticsearch è distribuito, in modo da poter gestire la replica dei dati, il che significa avere più copie dei dati nel cluster. Ciò consente un'alta disponibilità.

Potente query DSL : Elasticsearch ci offre l'interfaccia JSON per leggere e scrivere query su Lucene. Grazie a Elasticsearch, puoi scrivere query complesse senza conoscere la sintassi di Lucene.

Schemaless (senza schema): i campi (nome, coppie di valori) per schemanon devono essere definiti prima. Quando indicizzi i dati, elasticsearch può creare automaticamente lo schema in fase di esecuzione, come per esempio la magia.


0

Risponderò dal punto di vista dell'utilizzo.

Lucene è una libreria di motori di ricerca . Vorresti usarlo per costruire il tuo motore di ricerca: un nuovo concorrente Elasticsearch o Solr o qualcosa di limitato per il tuo caso d'uso (ad es. Analisi del testo).

Elasticsearch è un motore di ricerca . La maggior parte delle persone lo utilizza per l'aggregazione dei registri, la ricerca di prodotti o una variante di questi due (ad es. Analisi dei social media o ricerca di persone pertinenti per alcuni criteri di ricerca). È costruito sopra Lucene, quindi espone la maggior parte (anche se non tutte) delle sue caratteristiche . Aggiunge anche molto di più, in modo molto significativo:

  • API REST
  • query DSL
  • sistema distribuito (sharding, replica, gestione cluster)
  • sfaccettature / aggregazioni
  • funzionalità aggiuntive per l'uso comune (ad es. elaborazione di importazione ) e gestione (API per il monitoraggio delle relative metriche , backup e ripristino, ecc.)
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.