English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Introdução ao Elasticsearch

Elasticsearch é um servidor de busca baseado no Apache Lucene. Desenvolvido por Shay Banon e2010Publicado há anos. Atualmente, é mantido pela Elasticsearch BV. Sua versão mais recente é7.0.0.

Elasticsearch é um motor de busca e análise de texto distribuído e de código-fonte aberto em tempo real. Pode ser acessado a partir da interface de serviço web RESTful e armazenar dados usando JSON (JavaScript Object Notation) sem schema. Construído em Java, o Elasticsearch pode rodar em várias plataformas. Ele permite que os usuários naveguem rapidamente grandes volumes de dados.

Características

As características comuns do Elasticsearch são as seguintes-

  • Elasticsearch pode se expandir até PB de dados estruturados e não estruturados.

  • Elasticsearch pode substituir MongoDB e RavenDB como armazenamento de documentos.

  • Elasticsearch utiliza desnormalização para melhorar o desempenho da busca.

  • Elasticsearch é um dos motores de busca empresariais mais populares, atualmente usado por muitas grandes organizações, como a Wikipedia, The Guardian, StackOverflow e GitHub.

  • O Elasticsearch é um código-fonte aberto, disponível sob a versão da licença Apache.20 está usando.

Conceitos-chave

Os conceitos-chave do Elasticsearch são os seguintes-

Refere-se a uma única instância de execução do Elasticsearch. Um único servidor físico e virtual pode abrigar múltiplos nós, dependendo da capacidade dos seus recursos físicos (como RAM, armazenamento e capacidade de processamento).

Cluster

É uma coleção de um ou mais nós. O cluster fornece funcionalidades de índice e pesquisa coletivas em todos os nós.

Índice

É uma coleção de documentos de diferentes tipos e suas propriedades. O índice também usa o conceito de fragmentos para melhorar o desempenho. Por exemplo, um conjunto de documentos contém dados de aplicativos de rede social.

Documento

É uma coleção de campos definidos de uma forma específica em formato JSON. Cada documento pertence a um tipo e está dentro do índice. Cada documento está associado a um identificador único chamado UID.

Fragmento

Os índices são divididos horizontalmente em fragmentos. Isso significa que cada fragmento contém todas as propriedades dos documentos, mas o número de objetos JSON contidos é menor que o índice. A divisão horizontal torna o fragmento um nó independente, que pode ser armazenado em qualquer nó. O fragmento principal é a parte horizontal original do índice, e esses fragmentos principais são replicados nos fragmentos de cópia.

Cópia

O Elasticsearch permite que os usuários criem cópias de índices e fragmentos. A cópia não apenas ajuda a aumentar a disponibilidade dos dados em caso de falha, mas também melhora o desempenho da pesquisa ao executar operações de pesquisa paralelas nessas cópias.

Vantagens

  • O Elasticsearch é desenvolvido em Java, o que o torna compatível em quase todas as plataformas.

  • O Elasticsearch é em tempo real, em outras palavras, o documento adicionado um segundo após o tempo pode ser pesquisado neste motor.

  • O Elasticsearch é distribuído, portanto, pode ser facilmente expandido e integrado em qualquer grande organização.

  • Criar cópias completas usando o conceito de gateway é muito simples, uma ideia que é muito comum no Elasticsearch.

  • Em comparação com o Apache Solr, é muito fácil lidar com multi-tenant no Elasticsearch.

  • O Elasticsearch usa objetos JSON como resposta, o que permite que se use uma grande variedade de linguagens de programação para chamar o servidor Elasticsearch.

  • Além de não suportar tipos de documentos de renderização de texto, o Elasticsearch suporta quase todos os tipos de documentos.

Desvantagens

  • No Elasticsearch oferece suporte multilíngue para o processamento de solicitações e respostas de dados (disponível apenas em JSON), ao contrário do Apache Solr, que pode ser CSV, XML e JSON.

  • Às vezes, o Elasticsearch pode apresentar problemas de brain split.

Comparação entre Elasticsearch e RDBMS

No Elasticsearch, o índice é semelhante à tabela em um RDBMS (Sistema de Gestão de Banco de Dados Relacional). Cada tabela é uma coleção de linhas, assim como cada índice é uma coleção de documentos no Elasticsearch.

A tabela a seguir realiza uma comparação direta desses termos-

ElasticsearchSistema de Gestão de Banco de Dados Relacional (RDBMS)
ClusterBanco de Dados
FragmentoFragmento
ÍndiceTabela
CampoColuna
DocumentoLinha