Livro "Elasticsearch, Kibana, Logstash e próxima geração de mecanismos de pesquisa"

imagem Oi, habrozhiteli! Publicamos um livro sobre o Elastic Stack, desenvolvido para profissionais que trabalham com grandes volumes de dados e desejam extraí-los com segurança de qualquer fonte em qualquer formato, além de pesquisar, analisar e visualizar dados em tempo real. Este livro é para você, se você precisar de uma compreensão fundamental do trabalho do Elastic Stack nas áreas de computação distribuída e processamento de dados em tempo real.

Abaixo será fornecida a estrutura do livro sobre uma passagem sobre agregação.

Estrutura do livro


O capítulo 1, “Introdução ao Elastic Stack”, apresenta os principais componentes do Elastic Stack, explica seu papel na estrutura geral e descreve a finalidade de cada componente. Este capítulo também discute a necessidade de pesquisa e análise distribuída e escalável que são alcançadas com o Elasticsearch. No final, há um guia para baixar e instalar o Elasticsearch e o Kibana para que você possa começar a usar essas ferramentas.

O capítulo 2, “Introdução ao Elasticsearch”, apresenta os principais princípios do mecanismo de pesquisa do Elasticsearch, que é a base do Elastic Stack. Você se familiarizará com conceitos como índices, tipos, nós e clusters. Você também aprenderá como usar a API REST para executar operações básicas.

O capítulo 3, “A pesquisa é importante”, enfoca os métodos de pesquisa fornecidos pelo Elasticsearch. Você aprenderá sobre os conceitos básicos de análise de texto, tokenizadores, analisadores e recursos de pesquisa relevante. Este capítulo também fornece exemplos práticos de pesquisas relevantes.

O capítulo 4, “Analisando dados com o Elasticsearch”, fala sobre os diferentes tipos de agregação. Inclui exemplos que ajudarão você a entender melhor os princípios da análise de dados. Você aprenderá como usar diferentes tipos de agregações - do simples ao complexo, para navegar em grandes conjuntos de dados. Depois de ler este capítulo, você saberá quando e qual opção de agregação é melhor usar.

O Capítulo 5, Análise de log, fornece informações sobre a necessidade de usar o Logstash, sua arquitetura, instalação e configuração. O Elastic 5 fornece uma ferramenta Ingest Node que pode substituir a configuração do Logstash. Ao ler este capítulo, você aprenderá como criar contêineres usando o Elastic Ingest Node.

O Capítulo 6, “Projetando contêineres com Logstash”, fornece um entendimento básico do Logstash, que permite identificar dinamicamente dados de várias fontes e normalizá-los com os filtros selecionados. Você aprenderá como ter uma ampla variedade de filtros coloca o Logstash em pé de igualdade com outras estruturas de processamento de streaming em tempo real e quase em tempo real sem escrever código. Você também será apresentado à plataforma Beats e ao componente FileBeat usado para transportar arquivos de log (arquivos de log) de máquinas remotas.

O Capítulo 7, “Visualizando dados no Kibana”, mostra como você pode usar o Kibana para visualizar e apresentar seus dados de forma impressionante. Um exemplo de um conjunto de dados simples descreve a criação de visualizações em alguns cliques.

O capítulo 8, Elastic X-Pack, fala sobre a extensão Elasticsearch. Nesse momento, você já aprenderá o Elasticsearch e seus principais componentes para criar contêineres de dados e poderá conectar extensões para resolver problemas específicos. Neste capítulo, você lerá como instalar e configurar os componentes do X-Pack no Elastic Stack, aprender o básico de segurança e monitoramento e aprender como adicionar várias notificações.

O Capítulo 9, “Colocando a pilha elática em funcionamento”, fornece recomendações para colocar o complexo Elastic Stack em operação comercial. Você receberá recomendações sobre como implementar seu aplicativo e alterar as configurações padrão de acordo com os requisitos da operação. Você também aprenderá como usar os serviços de nuvem do Elastic Cloud.

O capítulo 10, “Criando um aplicativo para analisar dados de sensores”, descreve a criação de um aplicativo para analisar e processar dados de várias fontes. Você aprenderá como modelar dados no Elasticsearch, criar contêineres e visualizá-los no Kibana. Você também aprenderá como usar efetivamente os componentes do X-Pack para garantir a segurança e o monitoramento de seus contêineres, receber notificações de vários eventos.

O Capítulo 11, Monitoramento da infraestrutura do servidor, demonstra as possibilidades de usar o Elastic Stack para configurar o monitoramento em tempo real de servidores e aplicativos criados inteiramente no Elastic Stack. Você se familiarizará com outro componente da plataforma Beats - Metricbeat, que é usado para monitorar servidores / aplicativos.

Agregações da soma, média, valor máximo e valor mínimo


Encontrar a soma de um campo, um valor mínimo ou máximo ou uma média é uma operação bastante comum. No SQL, uma consulta para calcular a soma é a seguinte:

SELECT sum(downloadTotal) FROM usageReport; 

Assim, a soma do campo downloadTotal será calculada para todas as entradas na tabela. Para fazer isso, percorra todos os registros da tabela ou todos os registros no contexto selecionado e adicione os valores dos campos selecionados.

No Elasticsearch, você pode escrever uma consulta semelhante usando a agregação de soma.

Agregação de quantidade


Veja como escrever uma agregação simples da quantidade:

 GET bigginsight/_search { "aggregations": { 1 "download_sum": { 2 "sum": { 3 "field": "downloadTotal" 4 } } }, "size": 0 5 } 

  1. Os aggs ou agregações no nível superior devem servir como um invólucro para agregação.
  2. Atribua um nome à agregação. Nesse caso, agregamos a quantia no campo downloadTotal e selecionamos o nome apropriado download_sum. Você pode ligar para ela como quiser. Este campo é útil quando precisamos encontrar essa agregação específica nos resultados da resposta.
  3. Como agregamos a soma, portanto, o elemento soma é aplicado.
  4. Queremos agregar termos pelo campo downloadTotal.
  5. Especifique size = 0 para impedir que resultados brutos entrem na resposta. Precisamos apenas de resultados de agregação, não de resultados de pesquisa. Como não especificamos nenhum elemento de consulta de alto nível, a consulta funcionará com todos os documentos. Não precisamos de documentos não processados ​​(ou resultados de pesquisa) na resposta.

A resposta deve ser assim:

 { "took": 92, ... "hits": { "total": 242836, 1 "max_score": 0, "hits": [] }, "aggregations": { 2 "download_sum": { 3 "value": 2197438700 4 } } } 

Vamos entender os principais parâmetros da resposta.

  1. O elemento hits.total mostra o número de documentos que correspondem ao contexto da solicitação. Se nenhuma consulta ou filtro adicional for especificado, todos os documentos no tipo ou índice serão incluídos.
  2. Por analogia com a solicitação, essa resposta é colocada na agregação para apresentação neste formulário.
  3. A resposta da agregação solicitada é chamada download_sum, portanto, obtemos nossa resposta da agregação da quantidade dentro do elemento com o mesmo nome.
  4. O valor real é exibido após a aplicação da quantidade de agregação.

Agregações de valores médios, máximos e mínimos são muito semelhantes. Vamos considerá-los brevemente.

Agregação média


A agregação da média localiza o valor médio para todos os documentos no contexto da solicitação:

 GET bigginsight/_search { "aggregations": { "download_average": { 1 "avg": { 2 "field": "downloadTotal" } } }, "size": 0 } 

As diferenças visíveis da agregação da quantia são as seguintes.

  1. Escolhemos outro nome, download_average, para que fique claro que essa agregação foi projetada para calcular o valor médio.
  2. O tipo de agregação a ser executada é avg em vez de soma, como no exemplo anterior.

A estrutura da resposta é idêntica à resposta da subseção anterior, mas no campo valor, veremos o valor médio dos campos solicitados.

As agregações dos valores mínimo e máximo são semelhantes.

Agregação mínima


Encontre o valor mínimo do campo downloadTotal em todo o índice / tipo:

 GET bigginsight/_search { "aggregations": { "download_min": { "min": { "field": "downloadTotal" } } }, "size": 0 } 

Agregação do valor máximo


Encontre o valor máximo do campo downloadTotal em todo o índice / tipo:

 GET bigginsight/_search { "aggregations": { "download_max": { "max": { "field": "downloadTotal" } } }, "size": 0 } 

Essas são agregações muito simples. Agora vamos ver agregações mais complicadas de estatísticas e estatísticas avançadas.

Agregações de estatísticas e estatísticas avançadas


Essas agregações calculam alguns valores estatísticos comuns em uma única consulta e sem executar consultas adicionais. Como as estatísticas são calculadas de uma só vez e não solicitadas várias vezes, os recursos do Elasticsearch são salvos. O código do cliente também se torna mais fácil se você estiver interessado em vários tipos desses dados. Veja um exemplo de agregação de estatísticas.

Agregação de estatísticas


A agregação de estatísticas calcula a quantidade, média, valor máximo, valor mínimo e o número total de documentos em uma execução:

 GET bigginsight/_search { "aggregations": { "download_stats": { "stats": { "field": "downloadTotal" } } }, "size": 0 } 

Solicitar estatísticas na estrutura é semelhante a outras agregações de métricas que você já conhece; nada de especial acontece aqui.

A resposta deve ser assim:

 { "took": 4, ..., "hits": { "total": 242836, "max_score": 0, "hits": [] }, "aggregations": { "download_stats": { "count": 242835, "min": 0, "max": 241213, "avg": 9049.102065188297, "sum": 2197438700 } } } 

Como você pode ver, a resposta com o elemento download_stats contém o total, o mínimo, o máximo, a média e o total. Essa conclusão é muito conveniente, pois reduz o número de solicitações e simplifica o código do cliente.

Veja a agregação de estatísticas avançadas.

Agregação de estatísticas avançadas


A agregação de estatísticas estendidas retorna um pouco mais de estatísticas, além da opção anterior:

 GET bigginsight/_search { "aggregations": { "download_estats": { "extended_stats": { "field": "downloadTotal" } } }, "size": 0 } 

A resposta será assim:

 { "took": 15, "timed_out": false, ..., "hits": { "total": 242836, "max_score": 0, "hits": [] }, "aggregations": { "download_estats": { "count": 242835, "min": 0, "max": 241213, "avg": 9049.102065188297, "sum": 2197438700, "sum_of_squares": 133545882701698, "variance": 468058704.9782911, "std_deviation": 21634.664429528162, "std_deviation_bounds": { "upper": 52318.43092424462, "lower": -34220.22679386803 } } } } 

Na resposta, você também obtém a soma dos quadrados, a discrepância, o desvio padrão e seus limites.

Agregação de potência


A contagem de elementos exclusivos pode ser feita usando agregação de energia. Isso é semelhante à pesquisa de um resultado da consulta, como mostrado abaixo:

 select count(*) from (select distinct username from usageReport) u; 

Determinar a potência ou o número de valores exclusivos para um campo específico é uma tarefa bastante comum. Por exemplo, se você tiver um fluxo de cliques (fluxo de cliques) de vários visitantes do seu site, poderá descobrir quantos visitantes únicos existem no site em um dia, semana ou mês selecionado.

Vamos descobrir como encontrar o número de visitantes únicos usando os dados de tráfego de rede disponíveis:

 GET bigginsight/_search { "aggregations": { "unique_visitors": { "cardinality": { "field": "username" } } }, "size": 0 } 

A resposta da agregação de energia tem a mesma aparência de outras agregações de métricas:

 { "took": 110, ..., "hits": { "total": 242836, "max_score": 0, "hits": [] }, "aggregations": { "unique_visitors": { "value": 79 } } } 

Agora que descobrimos os tipos mais simples de agregações, podemos considerar algumas agregações segmentadas.

Sobre autores


Pranav Shukla é o fundador e chefe da Valens DataLabs, engenheiro, marido e pai de dois filhos. Arquiteto de big data e programador profissional usando linguagens de programação baseadas em JVM. Pranav desenvolve aplicativos corporativos para empresas e startups da Fortune 500 há mais de 14 anos. Sua principal especialização é a criação de aplicativos escaláveis ​​orientados a dados baseados em JVM, Java / Scala, o ecossistema Hadoop, bancos de dados Apache Spark e NoSQL. Desenvolvimento ativo em áreas relacionadas à organização de big data, análise e aprendizado de máquina.

A Pranav fundou o Valens DataLabs para ajudar outras empresas a usar dados para aumentar sua competitividade. A Valens DataLabs é especializada na criação de uma nova geração de aplicativos em nuvem para trabalhar com big data e tecnologias da web. O trabalho da empresa é baseado no uso de práticas flexíveis, nos princípios de manufatura enxuta, no desenvolvimento baseado em testes e comportamento, na integração contínua e na implantação contínua de sistemas de software sustentáveis.

Sharat Kumar M. N. é mestre em ciência da computação pela Universidade do Texas, Dallas, EUA. Ele trabalha no setor de TI há mais de dez anos, atualmente ocupa o cargo de desenvolvedor de soluções Oracle da Elasticsearch, é um apoiador da Elastic Stack. Orador ávido, ele já falou em várias conferências de ciência e tecnologia, incluindo o Oracle Code Event. Sharat - Elastic Certified Instructor (Elastic Certified Instructor) - um dos poucos especialistas técnicos do mundo que a Elastic Inc. concedeu o direito oficial de realizar treinamento "dos criadores do Elastic". Ele também é um entusiasta em aprendizado de máquina e ciência de dados.

Sobre o Science Editor


Marcelo Ochoa trabalha no laboratório da Faculdade de Ciências Exatas da Universidade Nacional do Centro de Buenos Aires (Universidade Nacional do Centro de Provincia de Buenos Aires), Argentina. Ele é CTO da Scotas (www.scotas.com), especialista em soluções em tempo pseudo-real usando as tecnologias Apache Solr e Oracle. Marcelo consegue trabalhar na universidade e se envolver em projetos relacionados ao Oracle e tecnologias de big data. Anteriormente, ele trabalhou com bancos de dados, web e tecnologias Java. No mundo XML, Marcelo é conhecido como desenvolvedor do DB Generator para o projeto Apache Cocoon. Ele participou da criação de projetos de código aberto, como DBPrism, DBPrism CMS e Restlet.org, onde trabalhou no Oracle XDB Restlet Adapter, que é uma alternativa para gravar serviços Web REST nativos no banco de dados JVM.

Desde 2006, ele participa do programa Oracle ACE e ingressou recentemente no projeto Docker Mentor.

»Mais informações sobre o livro podem ser encontradas no site do editor
» Conteúdo
» Trecho

Cupom de desconto de 25% para vendedores ambulantes - Elasticsearch

Após o pagamento da versão em papel do livro, uma versão eletrônica do livro é enviada por e-mail.

Source: https://habr.com/ru/post/pt451750/


All Articles