Was ist der Unterschied zwischen Lucene und Elasticsearch?

138

Ich weiß, dass ElasticSearch auf Apache Lucene basiert, aber ich möchte die signifikanten Unterschiede zwischen den beiden kennen.

Satish Madiwal
quelle

Antworten:

215

Lucene ist eine Java-Bibliothek . Sie können es in Ihr Projekt aufnehmen und mithilfe von Funktionsaufrufen auf seine Funktionen verweisen.

Elasticsearch ist ein JSON - basierte, verteilte , Web - Server über Lucene gebaut. Obwohl es Lucene ist, die die eigentliche Arbeit darunter erledigt, bietet Elasticsearch uns eine bequeme Ebene über Lucene. Jeder Shard, der in Elasticsearch erstellt wird, ist eine separate Lucene-Instanz. Also um es zusammenzufassen

  1. Elasticsearch basiert auf Lucene und bietet eine JSON-basierte REST-API , die auf Lucene-Funktionen verweist.
  2. Elasticsearch bietet ein verteiltes System zusätzlich zu Lucene . Ein verteiltes System ist Lucene nicht bekannt oder dafür gebaut. Elasticsearch bietet diese Abstraktion der verteilten Struktur.
  3. Elasticsearch bietet weitere unterstützende Funktionen wie Thread-Pool, Warteschlangen, Knoten- / Cluster-Überwachungs-API, Datenüberwachungs-API, Cluster-Verwaltung usw.
Vineeth Mohan
quelle
1
Gibt es einen Unterschied zwischen beiden in Bezug auf den DataStore?
AlikElzin-Kilaka
Was ist mit dem Datenspeicher?
Rookian
10
Ich bin mir nicht sicher, ob dies Ihre Frage im DataStore beantwortet, aber jeder Elasticsearch-Knoten enthält Shards. Ein einzelner Elasticsearch-Index wird mithilfe von Shards auf mehrere Knoten verteilt. Jeder Shard enthält einen Teil der Dokumente im Elasticsearch-Index. Jede dieser Scherben ist eine Instanz von Lucene. Im Stamm werden alle Daten in Lucene gespeichert und Elasticsearch verwaltet die Interaktionen.
Airn5475
31

Zusätzlich zu den Worten von @Vineeth Mohan :

Hochverfügbarkeit: Elasticsearch wird verteilt, sodass die Datenreplikation verwaltet werden kann. Dies bedeutet, dass sich mehrere Kopien von Daten in Ihrem Cluster befinden. Dies ermöglicht eine hohe Verfügbarkeit.

Leistungsstarkes Abfrage-DSL : Elasticsearch bietet uns eine JSON-Schnittstelle zum Lesen und Schreiben von Abfragen über Lucene. Dank Elasticsearch können Sie komplexe Abfragen schreiben, ohne die Lucene-Syntax zu kennen.

Schemaless (Schema-Free): Felder (Name, Wertepaare) für schemamüssen vorher nicht definiert werden. Wenn Sie Daten indizieren, kann elasticsearch zur Laufzeit automatisch ein Schema erstellen, wie z. B. Magic.

fgul
quelle
0

Ich werde aus einer Nutzungsperspektive antworten.

Lucene ist eine Suchmaschine Bibliothek . Sie möchten es verwenden, um Ihre eigene Suchmaschine zu erstellen: entweder einen neuen Elasticsearch- oder Solr-Konkurrenten oder etwas Enges für Ihren Anwendungsfall (z. B. Textanalyse).

Elasticsearch ist eine Suchmaschine . Die meisten Benutzer verwenden es für die Protokollaggregation, Produktsuche oder eine Variante dieser beiden (z. B. Analyse von sozialen Medien oder Auffinden relevanter Personen für bestimmte Suchkriterien). Es basiert auf Lucene und bietet daher die meisten (wenn auch nicht alle) Funktionen . Es fügt auch viel hinzu, vor allem:

  • REST-API
  • DSL abfragen
  • verteiltes System (Sharding, Replikation, Clusterverwaltung)
  • Facetten / Aggregationen
  • zusätzliche Funktionen für die allgemeine Verwendung (z. B. Ingest- Verarbeitung) und Verwaltung (APIs zur Überwachung der relevanten Metriken , Sicherung und Wiederherstellung usw.)
Radu Gheorghe
quelle