Elasticsearch - conceitos básicos

Elasticsearch é um servidor de pesquisa baseado em Apache Lucene. Foi desenvolvido por Shay Banon e publicado em 2010. Agora é mantido pela Elasticsearch BV. Sua versão mais recente é 7.0.0.

Elasticsearch é um mecanismo de pesquisa e análise de texto completo distribuído em tempo real e de código aberto. É acessível a partir da interface de serviço da web RESTful e usa documentos JSON (JavaScript Object Notation) sem esquema para armazenar dados. Ele é construído na linguagem de programação Java e, portanto, Elasticsearch pode ser executado em diferentes plataformas. Ele permite que os usuários explorem uma grande quantidade de dados em alta velocidade.

Características gerais

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

  • Elasticsearch é escalonável até petabytes de dados estruturados e não estruturados.

  • Elasticsearch pode ser usado como um substituto de armazenamentos de documentos como MongoDB e RavenDB.

  • Elasticsearch usa desnormalização para melhorar o desempenho da pesquisa.

  • Elasticsearch é um dos motores de busca corporativa populares e atualmente está sendo usado por muitas grandes organizações como Wikipedia, The Guardian, StackOverflow, GitHub etc.

  • Elasticsearch é um código aberto e está disponível sob a licença Apache versão 2.0.

Conceitos chave

Os principais conceitos do Elasticsearch são os seguintes -

Refere-se a uma única instância em execução do Elasticsearch. Um único servidor físico e virtual acomoda vários nós, dependendo dos recursos de seus recursos físicos, como RAM, armazenamento e capacidade de processamento.

Grupo

É uma coleção de um ou mais nós. O cluster fornece indexação coletiva e recursos de pesquisa em todos os nós para dados inteiros.

Índice

É uma coleção de diferentes tipos de documentos 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 um aplicativo de rede social.

Documento

É uma coleção de campos de uma maneira específica definida no formato JSON. Cada documento pertence a um tipo e reside dentro de um índice. Cada documento está associado a um identificador único denominado UID.

Fragmento

Os índices são subdivididos horizontalmente em fragmentos. Isso significa que cada fragmento contém todas as propriedades do documento, mas contém menos número de objetos JSON do que o índice. A separação horizontal torna o shard um nó independente, que pode ser armazenado em qualquer nó. O shard primário é a parte horizontal original de um índice e, em seguida, esses shards primários são replicados em shards de réplica.

Réplicas

Elasticsearch permite que um usuário crie réplicas de seus índices e shards. A replicação não apenas ajuda a aumentar a disponibilidade dos dados em caso de falha, mas também melhora o desempenho da pesquisa, realizando uma operação de pesquisa paralela nessas réplicas.

Vantagens

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

  • Elasticsearch é em tempo real, em outras palavras, após um segundo, o documento adicionado é pesquisável neste mecanismo

  • O Elasticsearch é distribuído, o que o torna fácil de escalar e integrar em qualquer grande organização.

  • A criação de backups completos é fácil com o uso do conceito de gateway, que está presente no Elasticsearch.

  • Manipular a multilocação é muito fácil no Elasticsearch quando comparado ao Apache Solr.

  • Elasticsearch usa objetos JSON como respostas, o que torna possível invocar o servidor Elasticsearch com um grande número de diferentes linguagens de programação.

  • Elasticsearch oferece suporte a quase todos os tipos de documentos, exceto aqueles que não oferecem suporte à renderização de texto.

Desvantagens

  • Elasticsearch não tem suporte a vários idiomas em termos de manipulação de dados de solicitação e resposta (possível apenas em JSON) ao contrário do Apache Solr, onde é possível nos formatos CSV, XML e JSON.

  • Ocasionalmente, o Elasticsearch tem um problema de situações de cérebro dividido.

Comparação entre Elasticsearch e RDBMS

No Elasticsearch, o índice é semelhante às tabelas do RDBMS (Relation Database Management System). Cada tabela é uma coleção de linhas, assim como todo índice é uma coleção de documentos no Elasticsearch.

A tabela a seguir fornece uma comparação direta entre esses termos-

Elasticsearch RDBMS
Grupo Base de dados
Fragmento Fragmento
Índice Mesa
Campo Coluna
Documento Linha