Elasticsearch é um mecanismo de busca e análise gratuito e de código aberto criado com base no Apache Lucene. Elasticsearch é distribuído e oferece suporte a todos os tipos de dados, incluindo dados numéricos, textuais, estruturados, não estruturados e geoespaciais. Elasticsearch vem com APIs REST simples e fornece recursos para escalabilidade e busca rápida.
Elasticsearch é uma parte importante do Elastic Stack, que é um conjunto de ferramentas de código aberto que inclui ingestão, armazenamento, enriquecimento, visualização e análise de dados. Ferramentas notáveis na pilha são Elasticsearch, Logstash e Kibana (ELK).
A arquitetura do Elasticsearch aproveita a indexação do Lucene e a combina com um modelo distribuído que separa a arquitetura em pequenos componentes, chamados shards, que podem ser distribuídos em vários nós.
Neste artigo, você conhecerá:
Elasticsearch é uma solução escalável de busca e análise que oferece suporte à alocação a vários clientes e fornece pesquisa quase em tempo real. Você pode usar Elasticsearch para permitir buscas por todos os tipos de dados e vários locais. O mecanismo ingere dados de vários locais, armazena-os e indexa os dados de acordo com o mapeamento manual ou automatizado predefinido.
Como o Elasticsearch funciona com uma arquitetura distribuída, os usuários podem pesquisar e analisar grandes volumes de dados em tempo real. Além disso, o Elasticsearch introduz escalabilidade no processo de busca, permitindo que você comece com apenas uma máquina e escale até centenas.
Você pode usar o Elasticsearch para executar um cluster de pesquisa completo (também conhecido como pesquisa de texto completo), como pesquisa de documentos, pesquisa de produtos e pesquisa de e-mail. No entanto, isso requer um alto nível de habilidades e experiência. Você também pode usar o Elasticsearch para armazenar dados pendentes de segmentação e dados que precisam ser agrupados em categorias, como métricas, rastreamentos e logs.
Elasticsearch pode ser implantado em vários ambientes de nuvem, assim como on-premises. Você pode hospedar o Elasticsearch por conta própria ou usar um serviço de nuvem como AWS Elasticsearch.
O Elasticsearch usa agentes de remessa, chamados beats, para transferir dados brutos de várias fontes para o Elasticsearch. Depois que os dados são enviados para o Elasticsearch, o mecanismo executa processos de ingestão de dados, que analisam, normalizam, enriquecem e preparam os dados para indexação. Depois que os dados são indexados, os usuários podem executar consultas complexas e usar agregações para recuperar resumos de dados complexos.
Para visualização e gerenciamento, o Elastic Stack oferece uma ferramenta chamada Kibana, que permite aos usuários criar visualizações de dados em tempo real, como gráficos de pizza, mapas, gráficos de linhas e histogramas. Kibana também permite compartilhar dashboards, usar Canvas para criar infográficos dinâmicos personalizados e usar Elastic Maps para visualizar dados geoespaciais.
A arquitetura do Elasticsearch foi desenvolvida para escalabilidade e flexibilidade. Os componentes principais são clusters, nós, fragmentos e analisadores.
Um cluster do Elasticsearch é composto por um grupo de nós que armazenam dados. Você pode especificar o número de nós que começam a ser executados com o cluster, assim como o endereço IP do servidor virtual ou físico. Você pode especificar essa informação no arquivo config/elasticsearch.yml, que contém todas as configurações.
Os nós em um cluster do Elasticsearch são conectados uns aos outros, e cada nó contém uma pequena parte dos dados do cluster. Você pode executar quantos clusters forem necessários. No entanto, geralmente um nó é suficiente. O sistema cria automaticamente um cluster quando um novo nó é iniciado. Os nós participam dos processos gerais de cluster responsáveis por pesquisa e indexação.
Em geral, o termo nó refere-se a um servidor que funciona como parte do cluster. No Elasticsearch, um nó é uma instância — não é uma máquina. Isso significa que você pode executar vários nós em uma única máquina. Uma instância do Elasticsearch consiste em um ou mais nós baseados em cluster. Por padrão, quando uma instância do Elasticsearch é iniciada, um nó também é iniciado.
Aqui estão as três principais opções para configurar um nó do Elasticsearch:
A arquitetura do Elasticsearch usa duas portas principais para comunicação:
Não há limite para o número de documentos que você pode armazenar em cada índice. No entanto, se um índice exceder os limites de storage do servidor de hospedagem, o Elasticsearch pode falhar. Para evitar esse problema, os índices são divididos em pequenas partes chamadas shards.
Os fragmentos são unidades de indexação pequenas e escaláveis que servem como componentes básicos da arquitetura do Elasticsearch. Os fragmentos permitem que você distribua operações e melhore o desempenho geral. Após criar um índice, você pode criar quantos fragmentos forem necessários. Cada fragmento funciona como um índice Lucene independente, que você pode hospedar em qualquer lugar do cluster.
No Elasticsearch, as réplicas são cópias de fragmentos de índice. As réplicas são usadas como mecanismo à prova de falhas para fins de backup e recuperação. As réplicas nunca são colocadas no nó que contém os fragmentos originais (primários).
Para garantir a disponibilidade, as réplicas são armazenadas em locais diferentes. Você pode definir réplicas depois que o índice for criado e criar quantas réplicas forem necessárias. Isso significa que você pode armazenar mais réplicas do que fragmentos primários.
Os analisadores são responsáveis por analisar frases e expressões em termos constituintes. Isso ocorre durante o processo de indexação. Cada analisador é composto por um tokenizador e vários filtros de token. Ao encontrar uma determinada expressão, o tokenizador pode dividir uma string em termos predefinidos.
A arquitetura do Elasticsearch é projetada para suportar a recuperação de documentos, que são armazenados como objetos JSON. O Elasticsearch suporta estruturas aninhadas, o que ajuda a lidar com dados e consultas complexos. Para rastrear informações, o Elasticsearch usa chaves precedidas por um sublinhado, que representam metadados.
NetApp Cloud Volumes ONTAP, a solução de gerenciamento de storage de nível empresarial líder do setor, oferece serviços de gerenciamento de storage seguros e comprovados na AWS, Azure e Google Cloud. O Cloud Volumes ONTAP suporta até 368 TB e vários casos de uso, como serviços de arquivo, bancos de dados, DevOps ou qualquer outra carga de trabalho empresarial, com um conjunto robusto de recursos, incluindo alta disponibilidade, proteção de dados, eficiências de storage, integração com Kubernetes e muito mais.
O Cloud Volumes ONTAP oferece suporte a recursos avançados para gerenciar o storage SAN na nuvem, atendendo a sistemas de banco de dados NoSQL, bem como compartilhamentos NFS que podem ser acessados diretamente de clusters de análise de dados de big data na nuvem.
Além disso, Cloud Volumes ONTAP oferece recursos de eficiência de storage, incluindo thin provisioning, compactação de dados e deduplicação, reduzindo a área de armazenamento e os custos em até 70%.
Para saber mais sobre como otimizar a implantação do Elasticsearch com NetApp, baixe gratuitamente nosso eBook Otimize o desempenho e os custos do Elasticsearch com Cloud Volumes ONTAP hoje.