O que é o Elasticsearch?

O Elasticsearch é um mecanismo de busca e análise de dados distribuído, gratuito e aberto 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 REST APIs simples, natureza distribuída, velocidade e escalabilidade, o Elasticsearch é o componente central do Elastic Stack, um conjunto de ferramentas gratuitas e abertas para ingestão, enriquecimento, armazenamento, análise e visualização de dados. Comumente chamado de ELK Stack (pelas iniciais de Elasticsearch, Logstash e Kibana), o Elastic Stack agora inclui uma rica coleção de agentes lightweight 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 analítica de log
  • Métricas de infraestrutura e monitoramento de container
  • APM (Monitoramento de performance de aplicação)
  • Análise e visualização de dados geoespaciais
  • Analítica 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. Do 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 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. 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 é gratuito?

Sim, os recursos gratuitos e abertos do Elasticsearch são gratuitos para uso sob o SSPL ou a licença da Elastic. 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 alerta e machine learning.

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 gratuito e aberto, gerenciado pela Elastic. A base do código inclui colaborações de desenvolvedores de dentro e de fora 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 e no Alibaba Cloud). Você pode também baixá-lo e instalá-lo no seu próprio hardware ou na nuvem. A documentação do Elasticsearch fornece instruções para baixar, 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.