01 ‐ Introdução ao Elastic Stack - BktechBrazil/elastic-eck GitHub Wiki
O Elastic Stack, anteriormente conhecido como ELK Stack, é um conjunto de ferramentas criado pela empresa Elastic que, usadas em conjunto, formam uma plataforma completa para buscar, analisar e visualizar grandes volumes de dados. Ao longo dos anos, a stack foi crescendo em produtos e casos de uso, e segue em constante evolução, com foco cada vez maior em inteligência artificial e busca semântica.
O Elasticsearch teve um início bem diferente do que se imagina. Sua história começa com Shay Banon, um desenvolvedor que queria ajudar a esposa a encontrar receitas culinárias.
O início
Por volta de 2004, Shay Banon estava em Londres acompanhando sua esposa, que estudava culinária. Para facilitar a busca nas receitas que ela colecionava, ele construiu um sistema usando o Apache Lucene, uma biblioteca de busca em texto escrita em Java, já consolidada na época. O resultado foi o Compass, uma ferramenta de busca que funcionava bem, mas tinha dificuldades para crescer: era difícil distribuir os dados entre múltiplos servidores e lidar com grandes volumes.
Anos depois, Banon reescreveu o projeto do zero. Em fevereiro de 2010, lançou publicamente o Elasticsearch (primeira versão, 0.4.0), distribuído, com API REST e dados no formato JSON, anunciado com o slogan "You Know, for Search".
O nascimento da empresa
Em 2012, o projeto de código aberto virou uma empresa: a Elasticsearch BV foi fundada pelos criadores do Elasticsearch e do Apache Lucene. Em 2013, o Elasticsearch se juntou ao Logstash e ao Kibana, ferramentas criadas de forma independente por outros desenvolvedores, formando o que ficou conhecido como ELK Stack (Elasticsearch, Logstash, Kibana). Em março de 2015, a empresa mudou de nome para Elastic, para refletir que o portfólio já ia muito além da busca.
Em outubro de 2018, a Elastic abriu capital na bolsa de valores americana (NYSE, código ESTC), levantando cerca de 252 milhões de dólares. Na abertura de capital, a empresa passou a ser uma sociedade anônima holandesa, a Elastic N.V.
Por que o Elasticsearch cresceu tão rápido?
Alguns fatores explicam a adoção rápida:
- API REST: qualquer linguagem de programação consegue se comunicar com o Elasticsearch usando requisições HTTP comuns. Não é necessário aprender um SDK proprietário.
- Dados no formato JSON: formato amplamente conhecido por desenvolvedores, sem necessidade de definir uma estrutura rígida antes de começar.
- Distribuição nativa: o Elasticsearch foi pensado desde o início para funcionar em múltiplos servidores ao mesmo tempo, dividindo os dados e as consultas entre eles.
- Comunidade ativa: por ser um projeto de código aberto, muitos desenvolvedores contribuíram com melhorias, plugins e integrações.
Onde o Elasticsearch é usado
O Elasticsearch aparece em cenários muito diferentes:
- TI e operações: centralização de logs de servidores, monitoramento de infraestrutura, análise de segurança (SIEM)
- Finanças: detecção de fraudes, análise de risco, auditoria
- Varejo e e-commerce: busca de produtos em lojas virtuais, personalização de experiências
- Saúde: análise de dados clínicos, pesquisa médica
- Inteligência artificial: armazenamento e busca de dados usados por aplicações com modelos de linguagem (RAG, agentes, busca semântica)
Linha do tempo de versões
| Versão | Ano | O que trouxe de mais relevante |
|---|---|---|
| 0.4 | 2010 | Primeiro lançamento público do Elasticsearch |
| 1.x | 2014 | Primeira versão estável: snapshot/restore, agregações, circuit breakers e a API _cat
|
| 5.x | 2016 | Elasticsearch, Kibana, Logstash e Beats passam a ter o mesmo número de versão: nasce o "Elastic Stack" |
| 6.x | 2017 | Upgrades sem indisponibilidade (rolling upgrade entre majors) e index sorting |
| 7.x | 2019 | Nova coordenação de cluster (Zen2), seleção adaptativa de réplicas; recursos básicos de segurança passam a ser gratuitos |
| 8.x | 2022 | Segurança ativada por padrão em toda instalação nova; busca vetorial densa nativa (HNSW) |
| 9.0 | 2025 | Migração para Lucene 10, ES|QL com JOIN, recursos de IA mais avançados |
| 9.4 | 2026 | Versão usada neste curso. Workflows GA, novidades no Agent Builder, suporte a Prometheus/PromQL (technical preview), novas capacidades no ES|QL e conformidade FIPS 140-3 |
A Elastic lança versões menores com frequência. Em setembro de 2026 já existe a linha 9.5. Este curso fixa a versão 9.4.2 para que todos os laboratórios sejam reproduzíveis.
Referência oficial: elastic.co/docs/release-notes
O que mudou do 8.x para o 9.x
Para quem já conhecia versões anteriores, os pontos mais importantes da versão 9.x são:
- Segurança já vinha ativada por padrão desde o 8.0, e isso continua no 9.x. Em instalações novas, o cluster já sobe com autenticação e comunicação criptografada configuradas automaticamente.
- Lucene 10 como motor de indexação e busca.
- Busca semântica e IA: capacidade de encontrar documentos por significado, não apenas por palavras exatas, com modelos de IA integrados. Útil em aplicações de inteligência artificial.
- Behavioral Analytics foi descontinuado (deprecated) no 9.0 e será removido em versão futura.
-
Enterprise Search não existe mais a partir do 9.0. No ECK, o recurso
EnterpriseSearchsó vale para versões 8.x do Stack.
Criado por Shay Banon e lançado em 2010. Como descrito acima, surgiu da necessidade de construir uma ferramenta de busca melhor do que as existentes na época.
Criado por Jordan Sissel como projeto pessoal para facilitar o trabalho com arquivos de log, coleta dados de diversas fontes, transforma e envia para o Elasticsearch. Surgiu de forma independente e se juntou ao Elasticsearch em 2013.
Criado por Rashid Khan, o objetivo inicial era simples: oferecer uma interface visual para explorar os dados armazenados no Elasticsearch. O projeto evoluiu e se tornou a principal interface de gerenciamento e análise de toda a stack.
A empresa foi fundada em 2012.
- Shay Banon: criador do Elasticsearch, atuou como CTO da empresa.
- Steven Schuurman: primeiro CEO da Elastic, responsável pela estratégia de negócios e crescimento inicial.
- Uri Boness: contribuiu para o desenvolvimento técnico e formação da empresa.
- Simon Willnauer: especialista em tecnologia de busca, um dos principais contribuidores do Apache Lucene, trouxe profundidade técnica ao projeto.
O Elastic Stack é dividido em três grandes funções: armazenar e buscar (Elasticsearch), explorar e visualizar (Kibana) e ingerir dados (Elastic Agent, Beats, Logstash, APM, OpenTelemetry). Todas as implantações da Elastic, inclusive o ECK, compartilham essa mesma base.
Elasticsearch é o núcleo da stack: um mecanismo de busca e análise distribuído. Ele armazena dados no formato JSON, indexa os documentos automaticamente e oferece uma API REST para buscar, inserir, atualizar e deletar dados. Por ser distribuído, os dados são divididos entre múltiplos servidores, o que permite crescer a capacidade simplesmente adicionando mais nós ao cluster.
O Elasticsearch também funciona como banco de dados vetorial: desde o 8.0 suporta busca vetorial densa nativa, e no 9.x a busca semântica é uma funcionalidade integrada, sem necessidade de ferramentas externas.
Quase tudo no Elasticsearch pode ser configurado e gerenciado pela API REST. Essa abordagem "API first" combina muito bem com o ECK, em que a infraestrutura também é descrita como código (manifestos YAML).
No ECK: recurso Elasticsearch. Cada nó do cluster vira um pod, e os grupos de nós com a mesma configuração (os nodeSets) viram StatefulSets.
Kibana é a interface gráfica do Elastic Stack. Pelo navegador, é possível explorar dados, criar gráficos, montar dashboards e gerenciar toda a stack, incluindo configurações de segurança, políticas de retenção de dados e monitoramento do cluster. O Console (Dev Tools) do Kibana permite enviar requisições diretamente para a API do Elasticsearch, e será a ferramenta mais usada nos laboratórios de consulta.
No ECK: recurso Kibana. Basta apontar o Kibana para o Elasticsearch com elasticsearchRef; o operator cuida da conexão, dos certificados e das credenciais.
Beats são programas leves instalados diretamente nos servidores para coletar dados e enviá-los ao Elasticsearch. Cada tipo de Beat é focado em um tipo de dado específico:
| Beat | Para que serve |
|---|---|
| Filebeat | Coleta logs de arquivos e serviços |
| Metricbeat | Coleta métricas de sistema (CPU, memória, disco) e serviços como Nginx e MySQL |
| Packetbeat | Monitora o tráfego de rede |
| Auditbeat | Coleta eventos de auditoria do sistema operacional |
| Winlogbeat | Coleta logs de eventos do Windows |
| Heartbeat | Verifica se serviços estão disponíveis (monitoramento de uptime) |
Nota: o Elastic Agent é a alternativa mais moderna aos Beats individuais. Com uma única instalação, ele substitui vários Beats e é gerenciado centralmente pelo Kibana. Em novas implementações com Elasticsearch 9.x, o Elastic Agent é a opção recomendada.
Logstash é uma ferramenta de processamento de dados. Ele recebe dados de diversas fontes, aplica transformações (como extrair campos de um texto de log, converter formatos de data ou adicionar informações de geolocalização) e envia o resultado para o Elasticsearch. É mais pesado que os Beats, mas muito mais poderoso quando o dado precisa ser transformado antes de ser indexado.
O Elastic Agent é o agente unificado da Elastic: uma única instalação substitui múltiplos Beats e centraliza a coleta de logs, métricas e dados de segurança. Cada agente segue uma política, à qual você adiciona integrações para novas fontes de dados. As políticas e as integrações são gerenciadas pelo Fleet, uma interface dentro do Kibana. Em implementações novas com Elasticsearch 9.x, o Elastic Agent é o caminho recomendado.
Elastic Observability é a solução da Elastic para monitorar aplicações e infraestrutura. Reúne em um único lugar três tipos de dados essenciais para diagnóstico de problemas: logs (registros de eventos), métricas (dados de desempenho como CPU e memória) e traces (o caminho que uma requisição percorre dentro de uma aplicação). O APM (Application Performance Monitoring) coleta os dados de desempenho das aplicações. Na versão 9.x, a Elastic adota o padrão aberto OpenTelemetry, com a sua distribuição EDOT (Elastic Distribution of OpenTelemetry), o que facilita a integração com outras ferramentas do mercado.
Elastic Security é a plataforma de segurança da Elastic. Funciona como um SIEM (sistema de monitoramento e análise de eventos de segurança), centralizando logs de firewalls, servidores, endpoints e outros sistemas para detectar e investigar ameaças. Inclui regras de detecção baseadas em padrões conhecidos de ataque e, na versão 9.x, conta com recursos de inteligência artificial para ajudar analistas a priorizar alertas.
A mesma stack pode ser implantada de formas diferentes. A escolha define quanto do trabalho de operação (instalar, escalar, atualizar, monitorar) fica com você e quanto é automatizado.
| Opção | Quem opera a infraestrutura | Em resumo |
|---|---|---|
| Elastic Cloud Serverless | Elastic, na nuvem | SaaS: sem clusters, nós ou shards para gerenciar; escala automaticamente e cobra por uso |
| Elastic Cloud Hosted (ECH) | Elastic, na nuvem (AWS, GCP ou Azure) | Cluster dedicado, gerenciado pela Elastic, com bastante controle sobre nós, hardware e versões |
| Elastic Cloud on Kubernetes (ECK) | Você, com o operator da Elastic no seu Kubernetes | Operator oficial que estende o Kubernetes para implantar e operar o Elastic Stack. É a opção usada neste curso |
| Elastic Cloud Enterprise (ECE) | Você, com um orquestrador da Elastic | Plataforma para criar e gerenciar muitos clusters na sua infraestrutura, a partir de um console central |
| Self-managed | Você | Instalação por pacotes em servidores ou VMs próprios. Controle total, mas toda a operação é manual |
O ECK fica entre o self-managed e as ofertas gerenciadas: você mantém controle total sobre o hardware, a rede, a segurança e as versões (como no self-managed), mas o operator automatiza boa parte da operação.
Referência oficial: Deployment options e Detailed deployment comparison
O Elastic Cloud on Kubernetes (ECK) é o operator oficial da Elastic para Kubernetes. Ele se baseia no padrão Operator do Kubernetes e estende as capacidades de orquestração do cluster para implantar e gerenciar Elasticsearch, Kibana, APM Server, Beats, Elastic Agent, Elastic Maps Server, Logstash, a política do agente AutoOps e o Package Registry.
Para entender o ECK, precisamos de duas ideias do Kubernetes:
- Estado desejado e reconciliação. No Kubernetes você declara o que quer (por exemplo, "um cluster Elasticsearch 9.4.2 com 3 nós de 4 GB cada") e controladores trabalham continuamente para que a realidade fique igual à declaração. Se algo sai do lugar (um pod cai, uma configuração muda), o controlador corrige.
-
CRD (Custom Resource Definition). O Kubernetes permite criar tipos de recurso novos. O ECK instala CRDs como
ElasticsearcheKibana, e a partir daí um cluster Elasticsearch passa a ser um objeto do Kubernetes, como um Pod ou um Service.
O operator é o software que junta essas duas ideias: ele observa os recursos do Elastic e faz todo o trabalho operacional que, no self-managed, seria manual.
você ──kubectl apply──▶ recurso Elasticsearch (YAML)
│ o operator observa e reconcilia
▼
operator ECK ──cria e mantém──▶ StatefulSets · Pods · PVCs · Services
Secrets (certificados TLS, senha do elastic)
O salto conceitual do curso: paramos de instalar software e passamos a declarar o que queremos. O operator transforma a declaração em realidade e a mantém assim.
Recurso (kind) |
apiVersion |
O que implanta | Onde aparece no curso |
|---|---|---|---|
Elasticsearch |
elasticsearch.k8s.elastic.co/v1 |
Cluster Elasticsearch | Todos os capítulos |
Kibana |
kibana.k8s.elastic.co/v1 |
Kibana | Todos os capítulos |
Agent |
agent.k8s.elastic.co/v1alpha1 |
Elastic Agent (standalone ou Fleet) e Fleet Server | Ingestão de dados |
Beat |
beat.k8s.elastic.co/v1beta1 |
Filebeat, Metricbeat, Heartbeat etc. | Ingestão de dados |
Logstash |
logstash.k8s.elastic.co/v1alpha1 |
Logstash | Ingestão de dados |
ApmServer |
apm.k8s.elastic.co/v1 |
APM Server | Observabilidade |
ElasticsearchAutoscaler |
autoscaling.k8s.elastic.co/v1alpha1 |
Autoscaling do Elasticsearch (Enterprise) | Capacity Plan |
ElasticMapsServer |
maps.k8s.elastic.co/v1alpha1 |
Elastic Maps Server (Enterprise) | Apenas citado |
StackConfigPolicy |
stackconfigpolicy.k8s.elastic.co/v1alpha1 |
Configurações aplicadas a vários clusters (Enterprise) | Apenas citado |
PackageRegistry |
packageregistry.k8s.elastic.co/v1alpha1 |
Elastic Package Registry (ECK 3.3+) | Apenas citado |
AutoOpsAgentPolicy |
autoops.k8s.elastic.co/v1alpha1 |
Agente do AutoOps (ECK 3.3+) | Apenas citado |
Atenção: as CRDs são recursos globais do cluster Kubernetes. Apagar uma CRD apaga todos os recursos daquele tipo em todos os namespaces. Por isso, desinstalar o ECK de forma descuidada pode apagar os clusters Elasticsearch.
Segundo a documentação oficial, o ECK automatiza operações críticas como:
- Gerenciar e monitorar múltiplos clusters
- Escalar a capacidade e o armazenamento do cluster
- Aplicar mudanças de configuração com segurança, por meio de rolling upgrades
- Proteger os clusters com certificados TLS
- Montar arquiteturas hot-warm-cold com reconhecimento de zonas de disponibilidade
Na prática, ao criar um recurso Elasticsearch, o operator:
- cria os StatefulSets e os pods de cada
nodeSet, com um PVC (disco persistente) por nó; - cria os Services
<nome>-es-http(porta 9200, HTTPS) e<nome>-es-transport(porta 9300, comunicação entre nós); - gera uma CA privada por cluster e os certificados TLS do HTTP e do transport;
- cria o usuário
elastice guarda a senha no Secret<nome>-es-elastic-user; - forma o cluster (descoberta de nós e eleição de master) e ajusta essas configurações quando nós entram ou saem;
- executa rolling upgrades quando você muda a versão ou a configuração no manifesto, um nó por vez, respeitando a saúde do cluster;
- calcula o heap da JVM automaticamente a partir do limite de memória do container.
Para isso, o operator controla algumas configurações do elasticsearch.yml que você não deve alterar, entre elas cluster.name, discovery.seed_hosts, cluster.initial_master_nodes, network.host, path.data, path.logs e as configurações de TLS (xpack.security.http.ssl.* e xpack.security.transport.ssl.*).
| Tarefa | Self-managed (tar.gz/pacote) | ECK |
|---|---|---|
| Instalar | Baixar o pacote, descompactar, criar usuário e diretórios em cada servidor |
kubectl apply de um manifesto Elasticsearch
|
| Configurar o nó | Editar o elasticsearch.yml em cada servidor |
Campo spec.nodeSets[].config do manifesto |
| Papéis dos nós |
node.roles em cada elasticsearch.yml
|
Um nodeSet por grupo de nós, com node.roles no config
|
| Heap da JVM | Arquivo jvm.options
|
Calculado a partir de resources.limits.memory; pode ser sobrescrito com ES_JAVA_OPTS no podTemplate
|
| Disco | Diretório local (path.data) |
PVC criado a partir de volumeClaimTemplates
|
| Iniciar e manter o processo | systemd / scripts | O operator e o Kubernetes (StatefulSet recria o pod se ele cair) |
| Certificados TLS | Gerar com elasticsearch-certutil e distribuir |
Gerados e renovados pelo operator |
Senha do elastic
|
elasticsearch-reset-password |
Gerada pelo operator, lida do Secret <nome>-es-elastic-user
|
| Configurações sensíveis (keystore) |
elasticsearch-keystore add em cada nó |
secureSettings apontando para Secrets do Kubernetes |
| Escalar | Instalar e configurar um servidor novo | Alterar count no manifesto |
| Upgrade | Parar, atualizar e reiniciar nó a nó, manualmente | Alterar spec.version; o operator faz o rolling upgrade |
| Ligar o Kibana ao Elasticsearch |
elasticsearch.hosts, CA e credenciais no kibana.yml
|
elasticsearchRef no manifesto Kibana
|
| Acesso de fora | Abrir portas no firewall do servidor |
port-forward, Service NodePort/LoadBalancer ou Ingress |
O que não muda: tudo o que acontece dentro do Elasticsearch e do Kibana. Índices, mappings, Query DSL, agregações, ILM, dashboards, Machine Learning e busca semântica funcionam exatamente igual.
apiVersion: elasticsearch.k8s.elastic.co/v1
kind: Elasticsearch
metadata:
name: quickstart
spec:
version: 9.4.2
nodeSets:
- name: default
count: 1
config:
node.store.allow_mmap: true
podTemplate:
spec:
containers:
- name: elasticsearch
env:
- name: ES_JAVA_OPTS
value: -Xms2g -Xmx2g # heap = 2 GB (<= 50% do request)
resources:
requests:
memory: 4Gi
cpu: "1"
limits:
memory: 4Gi # sem limite de CPU: permite bursts no lab
volumeClaimTemplates:
- metadata:
name: elasticsearch-data
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 20Gi
storageClassName: local-pathLeitura rápida do manifesto:
| Campo | Significado |
|---|---|
kind: Elasticsearch |
Tipo de recurso criado pela CRD do ECK |
spec.version |
Versão do Elastic Stack. Mudar este valor dispara um upgrade |
nodeSets |
Grupos de nós com a mesma configuração. Aqui, um grupo chamado default
|
count |
Quantos nós (pods) o grupo tem |
config |
Conteúdo que vai para o elasticsearch.yml dos nós do grupo |
podTemplate |
Personalização do pod: memória, CPU, variáveis de ambiente |
volumeClaimTemplates |
Disco persistente de cada nó |
| Componente | Compatibilidade oficial (ECK 3.4+) | Neste curso |
|---|---|---|
| Kubernetes | 1.31 a 1.36 | 1.31 (kubeadm, single-node) |
| OpenShift | 4.16 a 4.22 | Não usado |
| Kubernetes gerenciado | GKE, AKS, EKS | Não usado |
| Helm | 3.2.0 ou superior | Usado para instalar o operator |
| Elasticsearch, Kibana, APM Server | 8+, 9+ | 9.4.2 |
| Beats, Elastic Agent (standalone e Fleet), Elastic Maps Server | 8+, 9+ | 9.4.2 |
| Logstash | 8.12+, 9+ | 9.4.2 |
Referência oficial: Elastic Cloud on Kubernetes – Supported versions
Historicamente, o Elasticsearch e o Kibana foram distribuídos sob a licença Apache 2.0, uma das licenças de código aberto mais permissivas, que permite usar, modificar e redistribuir o software praticamente sem restrições.
Em janeiro de 2021, a Elastic anunciou que, a partir da versão 7.11, o código do Elasticsearch e do Kibana deixaria a Apache 2.0 e passaria a ter licença dupla: SSPL (Server Side Public License) e Elastic License. O motivo principal foi a AWS: a Amazon oferecia um serviço pago baseado no Elasticsearch, e a Elastic considerava que isso causava confusão no mercado e não era sustentável.
A Elastic License v2 (ELv2) mantém a liberdade de uso para a grande maioria dos casos: você pode usar, modificar e distribuir o software. A restrição relevante é que você não pode oferecer o Elasticsearch como um serviço gerenciado para terceiros sem um acordo com a Elastic.
Para desenvolvedores, engenheiros e empresas que usam o Elasticsearch internamente ou para implementar soluções para clientes, essa mudança não tem impacto.
Em agosto de 2024, a Elastic anunciou que o código do Elasticsearch e do Kibana passaria a ser oferecido também sob a licença AGPLv3, uma licença de código aberto aprovada pela OSI, ao lado da ELv2 e da SSPL. O usuário escolhe qual licença usar. A decisão reaproximou a Elastic da comunidade open source.
Resumo atual:
| Licença | Onde se aplica |
|---|---|
| Elastic License 2.0 (ELv2) | Distribuição padrão (os binários e imagens que baixamos) e código-fonte |
| SSPL 1.0 | Opção para o código-fonte |
| AGPLv3 | Opção para o código-fonte (licença open source aprovada pela OSI) |
| Apache 2.0 | Bibliotecas cliente (clients) do Elasticsearch |
Quando a Elastic mudou a licença em 2021, a AWS criou o OpenSearch, uma versão alternativa (fork) baseada no código da versão 7.10.2, a última sob Apache 2.0 antes da mudança. O OpenSearch continua sendo mantido de forma independente. Desde então, os dois produtos evoluíram separadamente: APIs, recursos e nomes de configuração não são mais equivalentes, e o que se aprende neste curso vale para o Elasticsearch.
Para implantações próprias (self-managed e ECK), a Elastic organiza os recursos em níveis:
| Nível | O que inclui |
|---|---|
| Free and open / Basic | Gratuito. Funcionalidades principais do Elastic Stack, segurança, dashboards, alertas |
| Platinum | Nível pago; segundo a tabela de subscrições de julho de 2026, disponível apenas para clientes que já o possuem |
| Enterprise | Nível pago mais completo: recursos avançados (como Machine Learning, searchable snapshots) e suporte da Elastic |
Na nuvem da Elastic (Elastic Cloud Hosted e Serverless), os níveis e a cobrança são próprios de cada oferta.
Os recursos de cada nível mudam com frequência. Sempre confira a tabela oficial antes de planejar um ambiente.
Referência oficial: elastic.co/subscriptions
O ECK tem apenas dois níveis de licença: Basic e Enterprise.
- Ao instalar o ECK, ele vem com a licença Basic, gratuita, e todas as aplicações do Elastic Stack gerenciadas por ele também ficam em Basic.
- Com uma licença Enterprise (chamada de orchestration license no download), o operator libera os recursos Enterprise do próprio ECK, como o autoscaling do Elasticsearch, o Elastic Maps Server e as StackConfigPolicies, e todas as aplicações gerenciadas passam a ter os recursos Platinum e Enterprise.
- Para testar, é possível ativar um trial Enterprise de 30 dias criando um Secret no namespace do operator. O trial só pode ser ativado uma vez; ao fim, os recursos pagos passam a operar em modo degradado.
# Exemplo da documentação oficial (não execute agora; o trial é usado nos capítulos de Machine Learning e Capacity Plan)
apiVersion: v1
kind: Secret
metadata:
name: eck-trial-license
namespace: elastic-system
labels:
license.k8s.elastic.co/type: enterprise_trial
annotations:
elastic.co/eula: acceptedO consumo é medido em ERUs (Enterprise Resource Units): o ECK soma a memória configurada (não a memória realmente usada) do Elasticsearch, Kibana, APM Server e Logstash e grava o resultado no ConfigMap elastic-licensing, no namespace do operator, a cada 2 minutos. Elastic Agent, Beats e Elastic Maps Server não entram na conta.
$ kubectl -n elastic-system get configmap elastic-licensing -o json | jq .dataReferência oficial: Manage your license in ECK
Esta seção apresenta o vocabulário básico do Elasticsearch. Os conceitos aqui são introdutórios; cada um deles será aprofundado nos capítulos seguintes. Ao fim de cada conceito, o quadro "E no ECK?" mostra como ele aparece no Kubernetes.
Um documento é a unidade básica de dado no Elasticsearch. É armazenado no formato JSON e equivale, de forma simplificada, a uma linha em uma tabela de banco de dados relacional.
{
"_id": "1",
"host": "web-server-01",
"status": 200,
"method": "GET",
"url": "/api/produtos",
"response_time_ms": 43,
"@timestamp": "2026-05-01T10:32:00Z"
}Cada documento pertence a um índice e possui um identificador único (_id), que pode ser definido na hora de inserir o dado ou gerado automaticamente pelo Elasticsearch.
Um índice é um agrupamento de documentos com características semelhantes, por exemplo, todos os logs de um sistema ou todos os registros de pedidos de uma loja. O índice é identificado por um nome em letras minúsculas e é a referência usada nas operações de busca e análise.
E no ECK? Os dados dos índices ficam gravados nos PVCs (discos persistentes) de cada pod do Elasticsearch. Se um pod é recriado, ele volta com o mesmo PVC e os mesmos dados.
O Elasticsearch oferece três formas principais de busca, que podem ser usadas em conjunto:
- Busca por texto (full-text search): encontra documentos que contêm determinadas palavras, ordenando os resultados por relevância. Ideal para campos descritivos, mensagens de log ou qualquer conteúdo textual.
-
Busca exata (filtro): retorna documentos que atendem a uma condição precisa, por exemplo
status = 200ou datas dentro de um intervalo. Não calcula relevância, apenas inclui ou exclui o documento. É mais rápida e o resultado pode ficar em cache. - Busca semântica: encontra documentos com base no significado, não nas palavras exatas. Por exemplo, buscar por "problema de conexão" pode retornar documentos que falam em "falha de rede" ou "timeout", mesmo sem usar as mesmas palavras. Esse tipo de busca depende de modelos de inteligência artificial e está disponível de forma nativa no Elasticsearch 9.x.
Agregações são operações que resumem e analisam conjuntos de dados diretamente no Elasticsearch. O equivalente mais próximo no SQL seria GROUP BY combinado com funções como COUNT, AVG e SUM.
Existem dois tipos principais:
| Tipo | O que faz | Exemplos |
|---|---|---|
| Bucket | Agrupa documentos em categorias | Agrupar por dia, por status HTTP, por país de origem |
| Metric | Calcula um valor sobre um grupo de documentos | Média de tempo de resposta, total de erros, valor máximo |
As agregações podem ser combinadas: por exemplo, agrupar os dados por dia e calcular a média de tempo de resposta dentro de cada dia.
Um cluster Elasticsearch é um conjunto de um ou mais servidores, chamados nós, que trabalham juntos e compartilham os dados. Cada nó pode ter papéis (roles) diferentes, como master (coordena o cluster), data (guarda os dados) ou ingest (pré-processa documentos).
E no ECK?
Elasticsearch Kubernetes / ECK Cluster Um recurso ElasticsearchGrupo de nós com a mesma configuração Um nodeSet, materializado como um StatefulSetNó Um pod (por exemplo quickstart-es-default-0)Disco do nó Um PVC (por exemplo elasticsearch-data-quickstart-es-default-0)Endereço do cluster Service <nome>-es-http(porta 9200)
O Elasticsearch foi projetado para funcionar em múltiplos servidores desde o início. Dois conceitos são centrais para isso:
Sharding: um índice pode ser dividido em partes menores chamadas shards. Cada shard pode ficar em um nó diferente, o que permite distribuir tanto o armazenamento quanto o processamento das consultas. Quanto mais shards, mais o trabalho é paralelizado.
Replicação: cada shard pode ter cópias em outros nós, chamadas réplicas. Se um nó falhar, as réplicas garantem que os dados continuem acessíveis e que o cluster permaneça funcionando sem perda de dados.
Escalar horizontalmente significa que, quando o cluster precisa de mais capacidade, basta adicionar novos nós. O Elasticsearch redistribui os shards automaticamente, sem precisar parar o serviço.
E no ECK? Escalar é mudar o
countde umnodeSete reaplicar o manifesto; o operator cria os novos pods e o Elasticsearch redistribui os shards. Para reduzir o número de nós, o operator primeiro migra os dados do nó que vai sair e só depois remove o pod.
- O Elastic Stack nasceu do Elasticsearch (2010) e hoje reúne Elasticsearch, Kibana, Elastic Agent/Fleet, Beats, Logstash e APM, com soluções de Observability, Security e Search/IA.
- A Elastic pode ser implantada na nuvem da Elastic (Hosted ou Serverless) ou na infraestrutura própria (self-managed, ECE ou ECK).
- O ECK é o operator oficial para Kubernetes: você declara recursos como
ElasticsearcheKibanaem YAML, e o operator cria e mantém pods, discos, Services, certificados e senhas. - O que acontece dentro do Elasticsearch e do Kibana (índices, consultas, dashboards, ILM, ML) é igual em qualquer forma de implantação.
- O ECK tem licença Basic (gratuita) e Enterprise; recursos como autoscaling exigem Enterprise ou trial.