Como funciona a pesquisa elástica?

Dec 25 2022
ES: Pré-requisitos do Elastic Search Em nosso artigo anterior, abordamos os fundamentos do Elastic Search e seus diversos usos. Agora, vamos nos aprofundar em como o Elastic Search realmente funciona.

ES: Pesquisa elástica

Pré-requisitos

O que é Pesquisa Elástica?

Em nosso artigo anterior , abordamos os fundamentos do Elastic Search e seus vários usos. Agora, vamos nos aprofundar em como o Elastic Search realmente funciona. Compreender o funcionamento interno do Elastic Search pode nos ajudar a utilizar melhor seus recursos e solucionar quaisquer problemas que possam surgir. Então, vamos dar uma olhada em como o Elastic Search opera.

Para entender como o ES funciona, devemos conhecer alguns conceitos básicos do Elastic Search.

  1. Conceitos Lógicos: Como o ES organiza os dados
  2. Componentes de back-end

Conceitos Lógicos:

Documentos

Documentos são unidades básicas de informação. Armazenamos nossos dados como documentos que podem ser objetos JSON . Então, como esses dados são organizados no cluster? A resposta é índices. No mundo dos bancos de dados relacionais, os documentos podem ser comparados a uma linha em uma tabela que representa uma determinada entidade.

Os documentos podem ser dados de texto ou estruturados codificados em JSON (os dados podem ser coisas como números, strings e datas)

Exemplo: um documento pode representar um artigo de enciclopédia ou entradas de log de um servidor web

Índice

Índices ES são partições lógicas de documentos e podem ser comparados a um banco de dados no mundo dos bancos de dados relacionais. Um índice é a entidade de nível mais alto que você pode consultar no ES. Por Exemplo: Podemos ter índice de casos, fornecedores, veículos, apólices.

Modelo

Cada índice tem um ou mais tipos de mapeamento usados ​​para dividir documentos em um grupo lógico. Pode ser comparado a uma tabela no mundo dos bancos de dados relacionais.

índice invertido

Ele é projetado para permitir pesquisas de texto completo muito rápidas. Um índice invertido lista cada palavra única que aparece em qualquer documento e identifica todos os documentos em que cada palavra ocorre. É uma estrutura de dados semelhante a um hashmap que direciona você de uma palavra para um documento.

o que acontece se tivermos um erro de digitação em nossa consulta de pesquisa, ou seja. o que acontece se procurarmos por Jefferiesem vez de Jeffery?

Para casos como acima, o TextAnalyzer desempenha um papel importante. No caso de pesquisa de texto completo, os analisadores são responsáveis ​​por tokenizar, normalizar, lematização, remoção de stopword dos documentos de entrada, etc., para que os resultados da pesquisa forneçam resultados corretos.

POST _analyze
{
  "tokenizer": "letter",
  "text": "The 2 QUICK Brown-Foxes jumped over the lazy dog's bone."
}

[ The, QUICK, Brown, Foxes, jumped, over, the, lazy, dog, s, bone ]

      
                

Agrupamento

No ES, os dados são armazenados em nós, pode haver n número de nós em uma máquina. E cada nó está relacionado ao cluster. Portanto, o cluster é um conjunto de nós

Nó

Um nó é um único servidor que faz parte de um cluster. Um nó armazena dados e participa dos recursos de indexação e pesquisa do cluster. Um nó ES pode ser configurado de diferentes maneiras:

  • Nó mestre: controla o cluster ES e é responsável por todas as operações em todo o cluster, como criar/excluir um índice e adicionar/remover nós.
  • Nó de dados: armazena dados e executa operações relacionadas a dados, como pesquisa e agregação.
  • Nó cliente: encaminha solicitações de cluster para o nó mestre e solicitações relacionadas a dados para nós de dados.

O ES fornece a capacidade de subdividir o índice em várias partes chamadas shards. Shard é como um índice. Para escalabilidade. Com a fragmentação, você pode armazenar bilhões de documentos em um único índice.

Réplicas

O ES permite que você faça uma ou mais cópias dos fragmentos do seu índice, chamados de “fragmentos de réplica” ou apenas “réplicas”. Basicamente, um fragmento de réplica é uma cópia de um fragmento primário. Cada documento em um índice pertence a um shard primário. As réplicas fornecem cópias redundantes de seus dados para proteger contra falhas de hardware e aumentar a capacidade de atender a solicitações de leitura, como pesquisar ou recuperar um documento.

Uma réplica é uma cópia do fragmento primário e tem duas finalidades:

  1. Aumentar Failover : Pode ser promovido a primário compartilhado se o primário falhar
  2. Aumente o desempenho : as solicitações Get e Search podem ser tratadas por fragmentos primários ou de réplica

Os dados brutos fluem para o ES de uma variedade de fontes, incluindo logs, métricas do sistema e aplicativos da web. A ingestão de dados é o processo pelo qual esses dados brutos são analisados, normalizados e enriquecidos antes de serem indexados no ES. Um índice ES é uma coleção de documentos relacionados entre si. ES armazena dados como documentos JSON. Cada documento correlaciona um conjunto de chaves (nomes de campos ou propriedades) com seus valores correspondentes (strings, números, booleanos, datas, matrizes de valores, geolocalizações ou outros tipos de dados).

O ES usa uma estrutura de dados chamada de índice invertido, que é projetada para permitir pesquisas de texto completo muito rápidas. Um índice invertido lista cada palavra única que aparece em qualquer documento e identifica todos os documentos em que cada palavra ocorre.

Durante o processo de indexação, o ES armazena documentos e cria um índice invertido para tornar os dados do documento pesquisáveis ​​quase em tempo real. A indexação é iniciada com a API de índice, por meio da qual você pode adicionar ou atualizar um documento JSON em um índice específico.

Referências

Elasticsearch de baixo para cima, parte 1

Referência do tokenizador | Guia do Elasticsearch [8.5] ​​| Elástico

Normalizadores | Guia do Elasticsearch [8.5] ​​| Elástico

Derivação | Guia do Elasticsearch [8.5] ​​| Elástico

Espero que você tenha gostado de ler sobre o Elastic Search e como ele funciona. Se você achou este artigo útil ou se tiver mais alguma dúvida, não hesite em entrar em contato comigo pelos comentários.

Para mais atualizações e informações sobre as últimas tendências tecnológicas, siga-me no Twitter ou LinkedIn . Obrigado por ler e estou ansioso para me conectar com você nas mídias sociais.

Twitter:https://twitter.com/geekfarmer_

Linkedin:https://www.linkedin.com/in/geekfarmer