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.

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.

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.


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.)
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.