Uma ideia por trás de Elastic Stack e Elasticsearch

(10 de abril de 2020 )

Uma breve introdução ao Elasticsearch e ELK Stack. Por que o quê e como.

ELK https : //aasconsultants.files.wordpress.com/2019/03/elk.png

História

Elástico NV é uma empresa fundada em 2012 em Amsterdã, Shay Banon foi o fundador da Elasticsearch. Sua primeira iteração foi chamada de Compass. O segundo foi Elasticsearch (com o Apache Lucene sob o capô). Ele abriu o código-fonte do Elasticsearch, criou o canal de IRC #elasticsearch e esperou que os usuários aparecessem. A resposta foi impressionante. Os usuários o adotaram de forma natural e fácil. A adoção disparou, uma comunidade começou a se formar e as pessoas notaram – a saber, Steven Schuurman, Uri Boness e Simon Willnauer. Juntos, eles fundaram uma empresa de pesquisa.

O que é Elastic Stack?

Elastic Stack também é conhecido como ELK stack. Basicamente, ele contém três projetos de código aberto.

  1. Elastic Search – Mecanismo de pesquisa e análise .
  2. Logstash – Pipeline de processamento de dados.
  3. Kibana – Painel para visualizar dados.

Todos esses três têm seu próprio significado e combinando esses três você obterá análises e análises de seus dados.

Por que é necessário?

De acordo com a pesquisa, o Facebook gera 4 Petabytes de dados todos os dias, ou seja, 40 milhões de GB . Os dados, agora é um mundo de dados. Portanto, precisamos de um sistema que analise nossos dados.

Espere !! O que isso significa? Analise.

Existem dois termos para entender.

  1. Análise – Na parte de análise, você obterá resultados de dados anteriores ou dos dados existentes que possui.
  2. Analytics – Quando você deseja prever os requisitos do usuário, deseja uma visualização baseada em gráficos para melhor clareza de negócios e também deseja compreender os padrões de dados.

Portanto, essas duas ferramentas mais importantes qualquer negócio. Você pode obter isso por meio de seus Dados . E com a ajuda desses dois, você pode expandir seus negócios e ter insights de negócios claros.

Agora, como? Porque analisar esses grandes dados em menos tempo não é uma tarefa fácil.

Desafios e soluções.

O que acontece em empresas muito grandes você obtém dados de diferentes lugares em diferentes formatos. Pode ser JSON ou XML. Portanto, precisamos de um mecanismo para obter dados inteiros em um só lugar e também em um formato. Então, para isso, usamos Logstash .

Agora, quando obtermos os dados, precisamos organizar os dados em uma ordem sistemática para que possamos avaliar as coisas com muita facilidade. Além disso, queremos analisar os dados, nesse caso, primeiro, analise os dados muito rapidamente. Para isso, temos Elasticsearch. Elasticsearch é desenvolvido em Java e é lançado como código aberto sob os termos da Licença Apache .

Agora, depois de concluir isso, precisamos de uma plataforma de visualização onde podemos mostrar nossa análise de dados. É aí que Kibana entra em cena. É assim que toda a pilha Elastic funciona. Para melhores insights de negócios .

Processo https://hackernoon.com/hn-images/1*Tvmj3XsqH4hJLvXnfm6sZQ.png

Configurando Elasticsearch, Logstash e Kibana

Primeiro, vamos baixar os três softwares de código aberto de seus respectivos links [ elasticsearch ], [ logstash ] e [ kibana ] Descompacte os arquivos e coloque todos os três na pasta do projeto.

Vamos começar.

Etapa 1 – Configure Kibana e Elasticsearch no sistema local. Executamos Kibana com o seguinte comando na pasta bin de Kibana.

bin\kibana

Da mesma forma, Elasticsearch é configurado assim:

bin\elasticsearch

Agora, nos dois terminais separados, podemos ver os dois módulos em execução.Para verificar se os serviços estão sendo executados, abra localhost: 5621 para Kibana e localhost: 9600 para Elasticsearch.

Aqui, estamos prontos com a configuração para pilha elástica. Agora vá para localhost: 5621 e abra as ferramentas de desenvolvimento aqui no console. É o lugar onde você pode escrever consultas Elasticsearch.

Console Kibana

Agora falaremos mais sobre Elasticsearch. Agora veremos como funciona exatamente o Elasticsearch.

Pesquisa elástica

Trabalho de pesquisa elástica

Antes de qualquer operação, temos que indexar nossos dados. Depois de indexados no Elasticsearch, os usuários podem executar consultas complexas em seus dados e usar agregações para recuperar resumos complexos de seus dados. O Elasticsearch armazena dados como documentos JSON e usa uma estrutura chamada Datas índice invertido , que é 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.

Para uma melhor compreensão, vamos divida Elasticsearch em vários tópicos.

  1. Gerenciamento de documentos
  2. mapeamentos
  3. análise
  4. Metodologia de pesquisa
  5. Agregação e filtros

O aspecto mais importante do Elasticsearch é entender sua arquitetura.

Cluster

No Elasticserach, armazenamos nossos dados em nós, pode haver um número n de nós em uma máquina. E cada nó está relacionado ao cluster. Portanto, o Cluster é um conjunto de nós .

Documentos

Você armazena seus dados como documentos que são objetos JSON. Então, como esses dados estã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.

Índice

Os índices do Elasticsearch são partições lógicas de documentos e pode ser comparado a um banco de dados no mundo dos bancos de dados relacionais.

Tipos

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

Cada documento é armazenado como um índice . O índice que você pode dizer é a coleção de documentos. Isso tem características semelhantes, por exemplo, o Departamento terá um índice A e os Funcionários terão um índice B, ou seja, eles estão logicamente relacionados.

Sharding

  1. Sharding é apenas uma forma de dividir o índice em pedaços menores.
  2. Cada pedaço é conhecido como um fragmento.
  3. O fragmento é feito em um nível de índice.

O fragmento é como um índice. Para escalabilidade. Com a fragmentação, você pode armazenar bilhões de documentos em um índice. Também existem réplicas, mas por enquanto, é bom o suficiente para começarmos e entender o Elasticsearch.

Então, vamos prosseguir para a construção e o mecanismo de pesquisa.

1. Gerenciando documentos

Antes disso, obtenha o gerenciador de pacotes Elasticserach.

npm i elasticsearch

Etapa -1- Vincule seu aplicativo ao Elasticsearch seguindo.

Conexão

Etapa 2 – Criar índice para um exemplo Criamos um índice como gov.

Criar índice

Passo 3 – Agora vamos adicionar documentos para indexar gov e no índice gov existe um tipo chamado constituintes .

Você pode se identificar, pois existe um banco de dados chamado gov e a tabela é constituintes.

Adicionando documentos

2. Mapeamentos

Mapeamento é o processo de definição de um documento e seus campos. Assim como definir o esquema de tabela em RDBMS.

Etapa 4 – Agora definiremos os mapeamentos para indexar constituintes do tipo gov.

Mapeamentos

3. Análise

Análise de texto é o processo de conversão de texto não estruturado , como o corpo de um e-mail ou a descrição de um produto em um formato estruturado que é otimizado para pesquisa.

Elasticsearch realiza análise de texto ao indexar ou pesquisar

text campos . Isso nós definimos em mapeamentos. Este é o fator chave para o mecanismo de pesquisa.

Por padrão, o Elasticsearch usa o

standard analisador para todas as análises de texto. O standard analisador oferece suporte para a maioria das linguagens naturais e casos de uso . Se você optar por usar o standard analisador no estado em que se encontra, nenhuma configuração adicional será necessária. Você também pode criar seu próprio analisador personalizado.

4. Metodologia de pesquisa

Existem diferentes tipos de consultas que você pode aplicar ao Elasticsearch. Com isso, você obterá resultados adequados. Aqui, darei um exemplo básico de uma consulta.

A consulta mais simples, que corresponde a todos os documentos.

Consulta de pesquisa

Consultas

As consultas compostas envolvem outras consultas compostas ou folha, seja para combinar seus resultados e pontuações, para alterar seu comportamento ou para alternar entre a consulta e o contexto de filtro.

A consulta padrão para combinar várias cláusulas de consulta folha ou composta, como must, should, must\_not ou filter. As cláusulas must e should têm suas pontuações combinadas.

O texto completo as consultas permitem que você pesquise campos de texto analisados ​​, como o corpo de um e-mail. A string de consulta é processada usando o mesmo analisador que foi aplicado ao campo durante a indexação. Ele irá analisar sua entrada. Se a entrada fornecida não for exata, mas ainda assim, você obterá um resultado.

Executar junções completas no estilo SQL em um sistema distribuído como o Elasticsearch é proibitivamente caro. Em vez disso, o Elasticsearch oferece duas formas de junção que são projetadas para escalar horizontalmente.

1.

nested query

2.

has\_child e

has\_parent consultas

Este grupo contém consultas que não se enquadram nos outros grupos. Verificou-se que documentos de natureza semelhante, consultas fixas também existem muitas outras, por favor verifique sua documentação .

Você pode usar consultas em nível de termo para encontrar documentos com base em precis e valores em dados estruturados. Exemplos de dados estruturados incluem intervalos de datas, endereços IP, preços ou IDs de produtos.

Diferentemente das consultas de texto completo, as consultas de nível de termo sim não analisar termos de pesquisa. Em vez disso, as consultas em nível de termo correspondem aos termos exatos armazenados em um campo. Ele encontrará a correspondência exata de entrada onde, como no texto completo, primeiro será analisado e, em seguida, pesquisará para que haja uma grande diferença entre a consulta de nível de termo e de texto completo.

5. Agregação e filtros

Em um contexto de filtro, uma cláusula de consulta responde à pergunta “ Este documento corresponde a esta cláusula de consulta? A resposta é um simples Sim ou Não – nenhuma pontuação é calculada. O contexto de filtro é usado principalmente para filtrar dados estruturados, por exemplo,

  • Isso timestamp se enquadra no intervalo de 2015 para 2016?
  • O campo status está definido como "published"?

Filtros usados ​​com frequência serão armazenados em cache automaticamente pelo Elasticsearch, para acelerar o desempenho.

O contexto do filtro está ativo sempre que uma cláusula de consulta é passada para um filter, como o parâmetro filter ou must\_not nos parâmetros

bool consulta, o parâmetro filter na

constant\_score consulta ou a

filter agregação .

Com a agregação é mais parecido com o RDBMS, você encontrará Avg, Sum e muitos insights de dados usando consultas complexas.

Resumo

  1. O que é Elastic Stack.
  2. Como funciona o ELK.
  3. O que é Elasticsearch e seu funcionamento.
  4. Algumas perguntas básicas sobre ele.

O que vem a seguir !!

Já que é um grande assunto a ser abordado. mas tentei dar uma breve introdução sobre ELK e Elasticsearch. A seguir, construiremos nosso próprio aplicativo de mecanismo de pesquisa usando Elasticsearch, onde também abordarei sua parte de codificação. Como manter sua estrutura de arquivos e outras coisas.

Conclusão

Elastic Stack é uma tecnologia muito importante para aprender. Você aplicará isso em qualquer um de seus projetos e o ELK Stack é mais comumente usado como uma ferramenta de análise de registro . Sua popularidade reside no fato de que fornece uma maneira confiável e relativamente escalonável de agregar dados de várias fontes. Muitas coisas ainda existem, mas depois disso, você pode começar com o Elasticsearch. Recomendo que você leia sua documentação . Se você tiver alguma dúvida ou encontrar algo errado com o conteúdo, deixe um comentário.

Obrigado 🙂