Arquitetura de Consulta e Indexação do Elasticsearch

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.

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:

  1. 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”.
  2. O nó coordenador transmite a consulta para todos os fragmentos envolvidos e suas réplicas.
  3. Cada fragmento executa a consulta localmente e retorna um conjunto leve de resultados para o nó coordenador.
  4. 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.
  5. O nó coordenador envia solicitações de busca para os fragmentos proprietários, que enriquecem os documentos no conjunto de resultados.
  6. Os documentos enriquecidos são retornados ao nó coordenador.
  7. 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:

  1. 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”.
  2. 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.
  3. O shard primário valida a operação e a executa localmente.
  4. O shard primário então encaminha a operação para todos os seus réplicas em paralelo.
  5. Os shards de réplica aplicam a operação localmente em seus nós.
  6. 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