O que é o Elasticsearch?

O Elasticsearch é um mecanismo de busca e análise de dados distribuído e open source para todos os tipos de dados, incluindo textuais, numéricos, geoespaciais, estruturados e não estruturados. O Elasticsearch é desenvolvido sobre o Apache Lucene e foi lançado pela primeira vez em 2010 pela Elasticsearch N.V. (agora conhecida como Elastic). Conhecido por suas APIs REST simples e sua natureza, velocidade e escalabilidade distribuídas, o Elasticsearch é o componente central do Elastic Stack, um conjunto de ferramentas open source para ingestão, enriquecimento, armazenamento, análise e visualização de dados. Comumente chamado de ELK Stack (com base nos nomes por extenso Elasticsearch, Logstash e Kibana), o Elastic Stack agora inclui uma coleção sofisticada de agentes de envio leves conhecidos como Beats para enviar dados ao Elasticsearch.

Para que o Elasticsearch é usado?

A velocidade e escalabilidade do Elasticsearch e sua capacidade de indexar muitos tipos de conteúdo significam que ele pode ser usado para inúmeros casos de uso:

  • Busca em aplicação
  • Busca em website
  • Busca empresarial
  • Logging e análise de dados de log
  • Metrics de infraestrutura e monitoramento de containers
  • APM (Monitoramento de performance de aplicação)
  • Análise e visualização de dados geoespaciais
  • Análise de segurança
  • Análise de dados empresarial

Como o Elasticsearch funciona?

Os dados brutos fluem para o Elasticsearch de uma variedade de fontes, incluindo logs, metrics de sistema e aplicações web. Ingestão de dados é o processo pelo qual os dados brutos são analisados, normalizados e enriquecidos antes de serem indexados no Elasticsearch. Depois que os dados são indexados no Elasticsearch, os usuários podem executar consultas complexas com base em seus dados e usar agregações para recuperar resumos complexos dos dados. No Kibana, os usuários podem criar visualizações avançadas dos dados, compartilhar dashboards e gerenciar o Elastic Stack.

O que é um índice do Elasticsearch?

Um índice do Elasticsearch é um conjunto de documentos que estão relacionados entre si. O Elasticsearch armazena dados como documentos JSON. Cada documento correlaciona um conjunto de chaves (nomes de campos ou propriedades) aos seus valores correspondentes (strings, números, boolianos, datas, matrizes de valores, geolocalizações ou outros tipos de dados).

O Elasticsearch usa uma estrutura de dados chamada índice invertido, que é projetada para permitir buscas de texto completo muito rápidas. Um índice invertido lista cada palavra exclusiva que apareça em qualquer documento e identifica todos os documentos em que cada palavra aparece.

Durante o processo de indexação, o Elasticsearch armazena documentos e desenvolve um índice invertido para tornar os dados dos documentos buscáveis praticamente em tempo real. A indexação é iniciada com a API de índice, pela qual você pode adicionar ou atualizar um documento JSON em um índice específico.

Para que o Logstash é usado?

O Logstash, um dos produtos principais do Elastic Stack, é usado para agregar e processar dados e enviá-los ao Elasticsearch. O Logstash é um pipeline de processamento de dados open source e do lado do servidor que permite fazer a ingestão de dados de várias fontes simultaneamente e enriquecer e transformar esses dados antes de serem indexados no Elasticsearch.

Para que o Kibana é usado?

O Kibana é uma ferramenta de visualização e gerenciamento de dados para o Elasticsearch que fornece histogramas e dashboards em tempo real, gráficos de linhas, gráficos de pizza e mapas. O Kibana também inclui aplicações avançadas como o Canvas, que permite aos usuários criar infográficos dinâmicos personalizados com base em seus dados, e o Elastic Maps para visualizar dados geoespaciais.

Por que usar o Elasticsearch?

O Elasticsearch é rápido, muito rápido. Como o Elasticsearch é desenvolvido sobre o Lucene, ele fica insuperável em busca de texto completo. O Elasticsearch também é uma plataforma de busca praticamente em tempo real, significando que a latência do momento em que um documento é indexado até que ele se torne buscável é muito pequena — normalmente um segundo. Consequentemente, o Elasticsearch é bem adaptado para casos de uso sensíveis ao tempo como análise de dados de segurança e monitoramento de infraestrutura.

O Elasticsearch é distribuído de fábrica. Os documentos armazenados no Elasticsearch são distribuídos em diferentes containers conhecidos como shards, que são duplicados para oferecer cópias redundantes dos dados em caso de falha de hardware. A natureza distribuída do Elasticsearch permite fazer a escalabilidade horizontal para centenas (talvez milhares) de servidores e manipular petabytes de dados.

O Elasticsearch é fornecido com um amplo conjunto de recursos. Além da velocidade, escalabilidade e resiliência, o Elasticsearch tem inúmeros recursos integrados avançados que tornam o armazenamento e a busca de dados ainda mais eficiente, como os rollups de dados e o gerenciamento do ciclo de vida de índices.

O Elastic Stack simplifica a ingestão, a visualização e os relatórios de dados. A integração com os Beats e o Logstash facilita o processamento dos dados antes de indexar no Elasticsearch. E o Kibana fornece visualização em tempo real dos dados do Elasticsearch, além de UIs para acessar rapidamente os dados de APM (monitoramento de performance de aplicação), de logs e de metrics de infraestrutura.

Perguntas frequentes do Elasticsearch

O Elasticsearch é grátis?

Sim, os recursos open source do Elasticsearch são grátis para usar sob a licença Apache 2. Recursos gratuitos adicionais estão disponíveis nos termos da licença da Elastic, e assinaturas pagas oferecem acesso ao suporte, além de recursos avançados como alertas e aprendizado de máquina.

Qual é a distribuição oficial do Elasticsearch?

A distribuição oficial do Elasticsearch está disponível no website da Elastic.

Quem pode colaborar com o projeto do Elasticsearch?

O Elasticsearch é um projeto open source gerenciado pela Elastic. A base do código inclui colaborações de desenvolvedores internos e externos da Elastic.

Qualquer pessoa pode enviar uma solicitação pull no repositório Elasticsearch GitHub. A Elastic conduz uma revisão transparente de todas as solicitações pull antes de mesclá-las na base de código.

Quais são as opções para implantar o Elasticsearch?

O Elasticsearch pode ser implantado como um serviço hospedado e gerenciado por meio do Elasticsearch Service (disponível na Amazon Web Services (AWS), no Google Cloud Platform (GCP) e no Alibaba Cloud) ou é possível fazer download e instalar ele em seu próprio hardware ou na nuvem. A documentação do Elasticsearch fornece instruções para fazer download, instalar e configurar o Elasticsearch.

Para usuários que desejam provisionar, gerenciar e monitorar suas implantações de um único console, mas preferem não usar uma plataforma de nuvem pública, a Elastic também oferece o Elastic Cloud Enterprise (que pode ser implantado em nuvens públicas ou privadas, máquinas virtuais ou hardware físico), além de uma camada de assinatura Private.

Quais linguagens de programação têm suporte no Elasticsearch?

O Elasticsearch oferece suporte a uma variedade de linguagens, e clientes oficiais estão disponíveis para:

  • Java
  • JavaScript (Node.js)
  • Go
  • .NET (C#)
  • PHP
  • Perl
  • Python
  • Ruby

Quais idiomas têm suporte no Elasticsearch?

O Elasticsearch oferece suporte a 34 idiomas, de árabe a tailandês, e fornece analisadores para cada um. A lista completa pode ser encontrada na documentação do Elasticsearch Language Analyzer. É possível adicionar suporte a outros idiomas com plugins personalizados.

O Elasticsearch fornece APIs REST?

Sim, o Elasticsearch fornece um conjunto completo e avançado de APIs REST para executar tarefas como verificar a integridade de clusters, executar CRUD (Criar, ler, atualizar e excluir) e operações de busca com base em índices, além de executar operações de busca avançadas como filtragem e agregações.