Qual é a diferença entre Lucene e Elasticsearch

139

Sei que o ElasticSearch é baseado no Apache Lucene, mas quero saber as diferenças significativas entre os dois.

Satish Madiwal
fonte

Respostas:

217

Lucene é uma biblioteca Java . Você pode incluí-lo em seu projeto e consultar suas funções usando chamadas de função.

O Elasticsearch é um servidor da Web baseado em JSON , distribuído e construído sobre o Lucene. Embora Lucene esteja realizando o trabalho real abaixo, o Elasticsearch fornece uma camada conveniente sobre o Lucene. Cada shard criado no Elasticsearch é uma instância separada do Lucene. Então, para resumir

  1. O Elasticsearch é construído sobre o Lucene e fornece uma API REST baseada em JSON para se referir aos recursos do Lucene.
  2. O Elasticsearch fornece um sistema distribuído sobre o Lucene . Um sistema distribuído não é algo para o qual Lucene conhece ou constrói. O Elasticsearch fornece essa abstração da estrutura distribuída.
  3. O Elasticsearch fornece outros recursos de suporte, como pool de encadeamentos, filas, API de monitoramento de nó / cluster, API de monitoramento de dados, gerenciamento de cluster etc.
Vineeth Mohan
fonte
1
Existe uma diferença entre os dois em relação ao DataStore?
AlikElzin-Kilaka
E o armazenamento de dados?
Rookian
10
Não tenho certeza se isso responde à sua pergunta no DataStore, mas cada Nó do Elasticsearch contém Shards. Um único índice do Elasticsearch é espalhado pelos nós usando o Shards. Cada fragmento contém uma parte dos documentos no Elasticsearch Index. Cada um desses fragmentos é uma instância do Lucene. Portanto, na raiz, todos os dados são armazenados no Lucene e o Elasticsearch gerencia as interações.
Airn5475
32

Além das palavras de @Vineeth Mohan :

Alta disponibilidade: o Elasticsearch é distribuído, para que ele possa gerenciar a replicação de dados, o que significa ter várias cópias de dados em seu cluster. Isso permite alta disponibilidade.

DSL poderoso de consulta : a Elasticsearch oferece uma interface JSON para ler e escrever consultas sobre o Lucene. Graças ao Elasticsearch, você pode escrever consultas complexas sem conhecer a sintaxe do Lucene.

Sem esquema (sem esquema): Os campos (nome, pares de valores) para schemanão precisam ser definidos antes. Quando você indexa dados, a elasticsearch pode criar esquemas automaticamente em tempo de execução, como mágica.

fgul
fonte
0

Eu responderei da perspectiva do uso.

Lucene é uma biblioteca de mecanismos de busca . Você deseja usá-lo para criar seu próprio mecanismo de pesquisa: um novo concorrente do Elasticsearch ou Solr ou algo restrito para o seu caso de uso (por exemplo, análise de texto).

O Elasticsearch é um mecanismo de pesquisa . A maioria das pessoas o utiliza para agregação de logs, pesquisa de produtos ou uma variante desses dois (por exemplo, análise de mídia social ou encontrar pessoas relevantes para alguns critérios de pesquisa). Ele é construído sobre o Lucene, e expõe a maioria (embora não todos) de seus recursos . Também adiciona muito em cima, mais significativamente:

  • API REST
  • consulta DSL
  • sistema distribuído (sharding, replicação, gerenciamento de cluster)
  • facetas / agregações
  • recursos adicionais para uso comum (por exemplo, processamento de ingestão ) e gerenciamento (APIs para monitorar suas métricas relevantes , backup e restauração, etc.)
Radu Gheorghe
fonte