O que é o Elasticsearch?
O Elasticsearch é um mecanismo de pesquisa e análise distribuído e de código aberto construído sobre a biblioteca Apache Lucene. O Elasticsearch também oferece pesquisa vetorial e geração aumentada de recuperação (RAG), suportando aplicações de IA modernas de forma transparente. As aplicações podem armazenar dados estruturados e não estruturados no Elasticsearch, com ou sem um esquema definido, enviando cargas JSON para um cluster Elasticsearch.
Arquitetura do Elasticsearch
Desde o início, os principais componentes de um cluster Elasticsearch são:
Documento
Um documento é o menor registro de informação armazenado pelo Elasticsearch e é representado como JSON. Um documento é composto por vários campos (pares chave-valor) de tipos diferentes e pode ter um esquema predefinido ou ser sem esquema, inferindo os tipos de dados de quaisquer novos campos indexados.
Índice
Um índice é uma coleção lógica de documentos com o mesmo esquema, identificado por um nome de índice.
Shard
Os índices do Elasticsearch são divididos em unidades gerenciáveis chamadas shards, que são uma coleção de documentos. Os shards são a unidade básica de busca e são replicados em vários nós para redundância e tolerância a falhas.
Nó
Um nó é uma instância independente do Elasticsearch e gerencia uma coleção de fragmentos que pertencem a um ou mais índices. Os nós podem ter diferentes papéis como nó de dados, nó mestre e nó de ingestão.
Cluster
Um cluster do Elasticsearch é uma coleção de nós interconectados. Todos os nós em um cluster podem lidar com solicitações de clientes e se comunicar entre si. Cada nó em um cluster possui um subconjunto dos fragmentos que pertencem a um índice.
Arquitetura de Consulta
O diagrama de arquitetura a seguir descreve o fluxo de uma solicitação de pesquisa:
- O usuário ou aplicativo faz uma consulta de pesquisa. A consulta pode ser tratada por qualquer nó no cluster. O nó que trata a solicitação é o nó “coordinating”.
- O nó coordenador transmite a consulta para todos os fragmentos envolvidos e suas réplicas.
- Cada fragmento executa a consulta localmente e retorna um conjunto leve de resultados para o nó coordenador.
- O nó coordenador mescla os resultados que recebe. Isso marca o fim da fase de “consulta”. A fase de consulta identifica os documentos essenciais que formam o resultado da pesquisa, mas o documento completo ainda precisa ser recuperado.
- O nó coordenador envia solicitações de busca para os fragmentos proprietários, que enriquecem os documentos no conjunto de resultados.
- Os documentos enriquecidos são retornados ao nó coordenador.
- O conjunto completo de resultados da pesquisa, classificados e enriquecidos, é retornado ao solicitante.
Arquitetura de Indexação
O diagrama de arquitetura a seguir descreve o fluxo de uma solicitação de indexação:
- O usuário envia um documento JSON para o Elasticsearch indexar. Se o documento já existir, novos campos são adicionados e campos existentes são sobrescritos. O nó que primeiro recebe a solicitação é o nó “coordinating”.
- O nó coordenador identifica o shard primário do documento recebido, geralmente com base no ID do documento, e encaminha a solicitação para o nó de dados que possui o shard primário.
- O shard primário valida a operação e a executa localmente.
- O shard primário então encaminha a operação para todos os seus réplicas em paralelo.
- Os shards de réplica aplicam a operação localmente em seus nós.
- Os passos 6, 7 e 8 mostram o reconhecimento da gravação subindo do shard de réplica para o shard primário, para o nó coordenador e para o chamador.
Conclusão
Este artigo descreve os diferentes componentes de um cluster Elasticsearch: documentos, índices, shards e nós. Também descreve a vida útil de uma solicitação de busca e de uma solicitação de indexação. Sua arquitetura flexível facilita a adição e remoção de nós à medida que o cluster se expande. Combinado com recursos como indexação sem esquema e suporte para recursos de busca de IA, isso torna o Elasticsearch o padrão de fato para organizações que precisam armazenar, pesquisar e analisar grandes volumes de dados em tempo real.
Source:
https://dzone.com/articles/elasticsearch-query-and-indexing-architecture