¿Cuál es la diferencia entre Lucene y Elasticsearch?

139

Sé que ElasticSearch se basa en Apache Lucene, pero quiero saber las diferencias significativas entre los dos.

Satish Madiwal
fuente

Respuestas:

217

Lucene es una biblioteca de Java . Puede incluirlo en su proyecto y consultar sus funciones mediante llamadas a funciones.

Elasticsearch es un JSON basado, distribuida , servidor web construido sobre Lucene. Aunque es Lucene quien está haciendo el trabajo real debajo, Elasticsearch nos proporciona una capa conveniente sobre Lucene. Cada fragmento que se crea en Elasticsearch es una instancia de Lucene separada. Entonces para resumir

  1. Elasticsearch está construido sobre Lucene y proporciona una API REST basada en JSON para referirse a las características de Lucene.
  2. Elasticsearch proporciona un sistema distribuido sobre Lucene . Un sistema distribuido no es algo de lo que Lucene esté al tanto o para lo que esté construido. Elasticsearch proporciona esta abstracción de la estructura distribuida.
  3. Elasticsearch proporciona otras características de soporte como grupo de subprocesos, colas, API de monitoreo de nodo / clúster, API de monitoreo de datos, gestión de clúster, etc.
Vineeth Mohan
fuente
1
¿Hay alguna diferencia entre ambos con respecto al DataStore?
AlikElzin-kilaka
¿Qué pasa con el almacén de datos?
Novato
10
No estoy seguro de si esto responde a su pregunta sobre DataStore, pero cada nodo Elasticsearch contiene fragmentos. Un único índice de Elasticsearch se extiende a través de los nodos utilizando fragmentos. Cada fragmento contiene una parte de los documentos en el índice Elasticsearch. Cada uno de estos fragmentos es una instancia de Lucene. Entonces, en la raíz, todos los datos se almacenan en Lucene y Elasticsearch gestiona las interacciones.
Airn5475
32

Además de las palabras de @Vineeth Mohan :

Alta disponibilidad: Elasticsearch se distribuye para que pueda administrar la replicación de datos, lo que significa tener múltiples copias de datos en su clúster. Esto permite una alta disponibilidad.

Potente DSL de consulta : Elasticsearch nos ofrece una interfaz JSON para leer y escribir consultas sobre Lucene. Gracias a Elasticsearch, puede escribir consultas complejas sin conocer la sintaxis de Lucene.

Sin esquema (sin esquema): los campos (nombre, pares de valores) schemano tienen que definirse antes. Cuando indexa datos, Elasticsearch puede crear esquemas automáticamente en tiempo de ejecución, como magia.

fgul
fuente
0

Contestaré desde una perspectiva de uso.

Lucene es una biblioteca de motores de búsqueda . Desea usarlo para crear su propio motor de búsqueda: ya sea un nuevo competidor de Elasticsearch o Solr o algo limitado para su caso de uso (por ejemplo, análisis de texto).

Elasticsearch es un motor de búsqueda . La mayoría de las personas lo usan para la agregación de registros, la búsqueda de productos o una variante de estos dos (por ejemplo, análisis de redes sociales o búsqueda de personas relevantes para algunos criterios de búsqueda). Está construido sobre Lucene, por lo que expone la mayoría (aunque no todas) de sus características . También agrega mucho en la parte superior, lo más importante:

  • API REST
  • consulta DSL
  • sistema distribuido (fragmentación, replicación, gestión de clúster)
  • facetas / agregaciones
  • características adicionales para uso común (por ejemplo, procesamiento de ingesta ) y administración (API para monitorear sus métricas relevantes , copia de seguridad y restauración, etc.)
Radu Gheorghe
fuente