Please enable JavaScript.
Coggle requires JavaScript to display documents.
Elasticsearch - Coggle Diagram
Elasticsearch
Quais são as suas boas práticas de configuração?
Ajustes de Shards e Replicas
: aumentar o número de replicas pode melhorar a tolerância a falhas e a velocidade de leitura
Configuração de Memória Heap
: uma configuração muito baixa pode levar a problemas de desempenho, enquanto um valor muito alto pode causar problemas para o Garbage Collector
Thread Pools
: o Elasticsearch pode utilizar diferentes tipos de thread para operações como pesquisas e indexação. Ajustar o tamanho e o tipo desses pools conforme a carga de trabalho impacta no desempenho
Cache de Novéis e Buffer Size
: ajustar o tamanho do cache de filtro e os tamanhos dos buffers de indexação pode acelerar as operações de pesquisa
Segurança com o protocolo HTTPS
: assegurar que os dados enviados para o cluster estejam criptografados e seguros
Criptografia de dados em repouso
: protege os dados armazenados no cluster de acessos não autorizados
Otimização de pesquisas
: utilizar consultas bem estruturadas, evitar termos desnecessários e aplicar filtros adequados podem reduzir o tempo de busca
Limpeza de índices
: a limpeza periódica de índices antigos ajuda a manter o cluster em um estado saudável e eficiente
Quais são as suas funcionalidades avançadas de busca?
Correspondência Difusa
: encontra documentos com termos aproximados ou pequenos erros. Útil para quando usuários podem cometer erros ortográficos ou não queremos uma correspondência exata
Stemização
: reduz a palavra à sua forma base ou raiz. Isso ajuda na busca por diferentes formas da mesma palavra.
Pontuação de relevância
: atribui pontuações aos documentos com base na sua relevância para a consulta.
Realce
: funcionalidade visual que destaca partes dos documentos que correspondem à consulta do usuário.
Tokenização
: processo de dividir o texto em partes menores chamadas de tokens, otimizando a indexação de palavras
Busca Vetorial
: técnica que permite encontrar documentos que são semanticamente semelhantes, mesmo que as palavras-chave sejam diferentes
O que é o Query DSL (Domain Specific Language)?
Linguagem baseada em JSON que permite os usuários criarem consultas complexas para recuperar dados que correspondam aos critérios definidos
Os usuários podem definir diferentes parâmetros, como campos a serem consultados, termos de pesquisa, filtros e muito mais
Tipos de filtro da linguagem
Term Filters
: usados para encontrar documentos que contenham um valor específico em um campo específico. Por exemplo: você pode filtrar documentos em que o campo '
status
' seja '
publicado
'
Match Filters
: usados para encontrar documentos que correspondam à uma determinada condição, beneficiando-se do processo de tokenização. Por exemplo: você pode filtrar documentos em que o campo '
categoria
' corresponda à '
eletrônicos
'
Range Filters
: permitem que você selecione documentos com valores dentro de um intervalo específico. Por exemplo: você pode filtrar documentos com um campo '
preço
' entre 100 e 200
Compound Filters
: você também pode combinar vários filtros usando operadores lógicos, como '
must
', '
should
' e '
must not
'.
As consultas são usadas para encontrar documentos que correspondam aos critérios de pesquisa especificados, levando em consideração a relevância dos termos buscados
Os filtros são utilizados para restringir os documentos considerados em uma consulta com base em critérios específicos, sem calcular a relevância.
Quais são as características de um índice?
Armazenamento de dados
: os documentos são armazenados no formato JSON. Cada documento é armazenado individualmente em um índice.
Esquema flexível
: isso significa que você pode adicionar documentos com estruturas diferentes dentro do mesmo índice. Por exemplo: em um índice '
clientes
' alguns documentos podem ter o campo '
endereço
', e outros não
Índices multiplataforma
: o Elasticsearch permite criar vários índices, cada um com seu próprio conjunto de documentos e configurações. Isso é útil para separar dados com diferentes propósitos ou fontes
Particionamento e escalabilidade
: os índices são particionados em shards, que são unidades básicas de particionamento distribuído. Isso permite distribuir os dados em várias máquinas, facilitando a escalabilidade horizontal
Recuperação de dados eficiente
: os índices são otimizados para pesquisa e suportam consultas complexas usando a Query DSL
O que são os N-gramas?
Quando um documento é indexado, o Elasticsearch pode dividir o texto em unidades menores, chamadas N-gramas, em vez de apenas palavras individuais
Útil em cenários que se deseja lidar com pesquisas que envolvem termos parciais, com erros ortográficos ou palavras compostas
Por exemplo, considere a palavra '
elefante
'. Se usarmos uma abordagem de 3-gramas (trigramas), ela será dividida em ['
ele
', '
lef
', '
efa
', '
fan
', '
ant
', '
nte
']
Você pode definir o tamanho dos N-gramas com base em suas necessidades específicas
O que é?
Mecanismo de busca e análise de dados em tempo real
Projetado com foco na pesquisa e análise de texto, tornando-o ideal para tarefas como
busca de texto completo
,
análise de logs
e
monitoramento de segurança
Razões para
não ser usado como armazenamento principal
de uma aplicação
Modelagem de dados limitada
Otimizado para documentos semiestruturados
Não suporta normalização e relacionamentos
Escrita assíncrona
Prioriza a velocidade de leitura e pesquisa
Pode haver um delay para recuperar dados que acabaram de ser inseridos
Consumo de recursos
Exige uma utilização elevada de CPU e memória
Aplicações com o armazenamento de grandes volumes de dados podem tornar o custo do Elasticsearch muito elevado
Backup e recuperação
O Elasticsearch é mais adequado para dados com vida útil mais curta, não sendo uma boa opção para aplicações que necessitem de um backup histórico
Não é compatível com o modelo ACID
Como funciona a sua arquitetura?
Clusters
Identificados por um nome único
Coleção de um ou mais nós (servidores) que armazenam os dados e fornecem os recursos de indexação e pesquisa
Nós
Servidor individual que faz parte do cluster
Identificados por um nome único
Podem desempenhar vários papéis
Nós Master
Gerenciam o estado do cluster
Fazem a criação e exclusão de índices
Nós Data
Armazenam e executam operações relacionadas com os dados
Nós Ingest
Pré-processam os dados antes de serem indexados
Nós de Machine Learning
Empregados para análises preditivas e detecção de anomalias
Shards
Subdivisão de um índice no Elasticsearch
Cada índice pode ser dividido em múltiplos shards
Permitem a distribuição de dados por vários nós
Tipos de Shards
Shards Primários
: cada documento no índice pertence a um único shard primário
Shards de Réplicas
: cópias dos shards primários e proporcionam redundância dos dados
O que é o Elasticsearch API?
Interface que permite os desenvolvedores interagirem com o Elasticsearch para realizar a indexação, pesquisa e análise de dados
Principais funcionalidades
Indexação de dados
: armazenar dados (textos simples, objetos JSON, datas) em um formato estruturado, tornando-os acessíveis e pesquisáveis
Antes de indexar seus dados, você precisará criar um índice. Pense no índice como algo semelhante a uma tabela do banco de dados em que você pode armazenar documentos relacionados. Certifique-se de mapear os campos para especificar como os diferentes tipos de dados devem ser tratados
Pesquisa de dados
: oferece uma poderosa capacidade de pesquisa textual e analítica
O Elasticsearch permite realizar consultas de correspondência exata, pesquisas de texto completo, correspondência parcial, filtragem por critérios e até mesmo agregações
Você pode usar consultas simples, como correspondência de termos (match), correspondência de frases (phrase match) ou correspondência de prefixo (prefix match).
Você pode usar consultas avançadas, como consultas booleanas, consultas de intervalo e consultas geoespaciais
Facilidade de uso
: oferece uma variedade de linguagens de consulta, como JSON ou DSL (Domain Specific Language)
Integração
: pode ser integrado com outras ferramentas como o Kibana (visualização e análise de dados), Logstash (coleta e processamento de dados) e Beats (coleta de dados de diferentes fontes)