Treinamento Elasticsearch - Parte 2
-
Upload
luiz-henrique-zambom-santana -
Category
Technology
-
view
121 -
download
1
Transcript of Treinamento Elasticsearch - Parte 2
![Page 1: Treinamento Elasticsearch - Parte 2](https://reader034.fdocuments.in/reader034/viewer/2022042716/55a6727b1a28ab6e208b4651/html5/thumbnails/1.jpg)
Conceitos avançados de Elasticsearch
Luiz Henrique Zambom Santana
24 de Fevereiro de 2015
![Page 2: Treinamento Elasticsearch - Parte 2](https://reader034.fdocuments.in/reader034/viewer/2022042716/55a6727b1a28ab6e208b4651/html5/thumbnails/2.jpg)
Agenda
• Busca filtered
• Multifields• Mapeamento• Busca
• Buscas avançadas• Fields• Agregações• Highlight• Boost vs. Sort
• Cliente PHP
• Problemas comuns
![Page 3: Treinamento Elasticsearch - Parte 2](https://reader034.fdocuments.in/reader034/viewer/2022042716/55a6727b1a28ab6e208b4651/html5/thumbnails/3.jpg)
Buscas - FilteredPOST /indice/post/_search
{
"query": {
"filtered": {
"query": {
"match": {
"relator": "ANTONIO"
}
},
"filter": {
"range": {
“data": {
“lte": "now - 1d / d"
}
}
}
}
}
}
![Page 4: Treinamento Elasticsearch - Parte 2](https://reader034.fdocuments.in/reader034/viewer/2022042716/55a6727b1a28ab6e208b4651/html5/thumbnails/4.jpg)
Multifields - MapeamentoPOST /indice/post/_mapping
{
"processo": {
"properties": {
…
"descricao": {
"type": "string",
"fields": {
"raw": {
"type": "string",
"index": "not_analyzed"
}
}
},
…
}
}
![Page 5: Treinamento Elasticsearch - Parte 2](https://reader034.fdocuments.in/reader034/viewer/2022042716/55a6727b1a28ab6e208b4651/html5/thumbnails/5.jpg)
Multifields - Busca
POST /indice/post/_search
{
"query": {
"match": {
"assunto.raw": "CONTRATO/REGISTRO"
}
}
}
![Page 6: Treinamento Elasticsearch - Parte 2](https://reader034.fdocuments.in/reader034/viewer/2022042716/55a6727b1a28ab6e208b4651/html5/thumbnails/6.jpg)
Buscas
• Fields
• Fuziness
• Ordenação
• Paginação
• Boost
• Agregações
• Suggestions
POST /indice/post/_search
{
"fields" : "descricao",
"from" : 0, "size" : 10,
"sort" : [
"_score",
“data",
“relator"
],
"query": {
"filtered": {
"query": {
"match": {
![Page 7: Treinamento Elasticsearch - Parte 2](https://reader034.fdocuments.in/reader034/viewer/2022042716/55a6727b1a28ab6e208b4651/html5/thumbnails/7.jpg)
Fields
• Forma de diminuir a quantidade de dados na rede
POST /indice/post/_search
{
"fields" : "descricao, relator",
![Page 8: Treinamento Elasticsearch - Parte 2](https://reader034.fdocuments.in/reader034/viewer/2022042716/55a6727b1a28ab6e208b4651/html5/thumbnails/8.jpg)
Agregações
• Agregações são comparáveis ao GROUP BY do SQL
• Exemplo, agregar por relator:"query": {
"match": {
"descricao": "carro"
}
},
"aggregations": {
"descricao_agg": {
"terms": {
"field": "descricao.raw"
}
}
}
![Page 9: Treinamento Elasticsearch - Parte 2](https://reader034.fdocuments.in/reader034/viewer/2022042716/55a6727b1a28ab6e208b4651/html5/thumbnails/9.jpg)
Highlight
POST /indice/post/_search
{
"query": {
…
},
"aggregations": {
…
},
"highlight" : {
"fields" : {
"descricao" : {"force_source" : true}
}
}
}
![Page 10: Treinamento Elasticsearch - Parte 2](https://reader034.fdocuments.in/reader034/viewer/2022042716/55a6727b1a28ab6e208b4651/html5/thumbnails/10.jpg)
Paginação
POST /indice/post/_search
{
"fields" : "descricao",
"from" : 0, "size" : 10,
"sort" : [
![Page 11: Treinamento Elasticsearch - Parte 2](https://reader034.fdocuments.in/reader034/viewer/2022042716/55a6727b1a28ab6e208b4651/html5/thumbnails/11.jpg)
Sort
POST /indice/post/_search
{
"fields" : "descricao",
"from" : 0, "size" : 10,
"sort" : [
"_score",
“data",
“relator"
],
![Page 12: Treinamento Elasticsearch - Parte 2](https://reader034.fdocuments.in/reader034/viewer/2022042716/55a6727b1a28ab6e208b4651/html5/thumbnails/12.jpg)
Boost
"must": [
{
"prefix": {
"relator": "ANTONIO",
"boost": "500"
}
}
],
![Page 13: Treinamento Elasticsearch - Parte 2](https://reader034.fdocuments.in/reader034/viewer/2022042716/55a6727b1a28ab6e208b4651/html5/thumbnails/13.jpg)
Suggestions
…
"suggest": {
"my-suggestion": {
"text": "carro",
"term": {
"field": "descricao"
}
}
}
![Page 14: Treinamento Elasticsearch - Parte 2](https://reader034.fdocuments.in/reader034/viewer/2022042716/55a6727b1a28ab6e208b4651/html5/thumbnails/14.jpg)
Fuzziness
…
"query": {
"match": {
"descricao": "caro",
"fuzziness": "1"
}
},
![Page 15: Treinamento Elasticsearch - Parte 2](https://reader034.fdocuments.in/reader034/viewer/2022042716/55a6727b1a28ab6e208b4651/html5/thumbnails/15.jpg)
Cliente PHP
• Não use um cliente HTTP padrão com o Guzzle!
• Use o cliente oficial• https://www.elastic.co/guide/en/elasticsearch/client/php-
api/current/index.html
• Vide• http://www.devmedia.com.br/elasticsearch-desenvolvendo-big-data-com-
php/31609
![Page 16: Treinamento Elasticsearch - Parte 2](https://reader034.fdocuments.in/reader034/viewer/2022042716/55a6727b1a28ab6e208b4651/html5/thumbnails/16.jpg)
Processamento de logs
• Logstash e Kibana• Plugins do Elasticsearch, formam juntos o ELK
• Vide:• http://pt.slideshare.net/LuizHenriqueZambomSa/elasticsearch-como-gerenciar-seus-
logs-com-logstash-e-kibana
• Usa o GROK para unificar a visão sobre logs
• Envia os dados para o Elasticsearch
• Visualiza no Kibana
![Page 17: Treinamento Elasticsearch - Parte 2](https://reader034.fdocuments.in/reader034/viewer/2022042716/55a6727b1a28ab6e208b4651/html5/thumbnails/17.jpg)
Problemas comuns
• Rede e instalação• Modificar o nome do cluster, o padrão é “elasticsearch”
• Não deixar o mesmo nome em produção, QA e desenvolvimento, pois os clusters podem se “fundir”:• Developer liga a máquina
• Nó local se une ao cluster
• Migração de shards
• Developer desliga a máquina
• Cluste em red state, com dados perdidos
![Page 18: Treinamento Elasticsearch - Parte 2](https://reader034.fdocuments.in/reader034/viewer/2022042716/55a6727b1a28ab6e208b4651/html5/thumbnails/18.jpg)
Problemas comuns
• Pouca relevância de resultados• Revisar boost• Modificar analisadores• Usar inquisitor!!!• Colocar os filtros no início
• Desempenho de indexação• Diminuir número de réplicas• Analisadores• Evitar merging de segmentos ("indices.store.throttle.type" : "none“). Conforme os dados vão sendo alterados
no ES, novos segmentos vao sendo criados. Casa segmento consome memória e ciclos de CPU, mas unificá-los é um processo caro. Depois do bulk chamar a otimização para forçar o merging.
• Usar Marvel• Aumentar número de threads até EsRejectedExecutionException• Desabilitar campo _all• index.translog.flush_threshold_size para 1gb (o padrão é 200mb) para evitar escrita
![Page 19: Treinamento Elasticsearch - Parte 2](https://reader034.fdocuments.in/reader034/viewer/2022042716/55a6727b1a28ab6e208b4651/html5/thumbnails/19.jpg)
Problemas comuns
• Desempenho de busca• Cache (priorizar o uso de filters)
• Fields:• Armazena valores de campos• Usado principalmente para agregação e ordenação (menos importante para TA)
• Shard query (1.4.*):• Armazena resultados de consultas por shard
• Filter (LRU):• Mais importante! Armazena resultados de filtros• indices.cache.filter.size (porcentagem do tamanho de memória)
• Aumentar número de réplicas e shards (múltiplo do número de nós)• Analisadores (causam uso de CPU)• Aumentar o refresh interval• Slowlog (otimizar busca)• Verificar EsRejectedExecutionException no log• Aumentar threadpool.search.queue_size, default 1000
![Page 20: Treinamento Elasticsearch - Parte 2](https://reader034.fdocuments.in/reader034/viewer/2022042716/55a6727b1a28ab6e208b4651/html5/thumbnails/20.jpg)
Problemas comuns
• Alta disponibilidade• Cluster ativo/ativo
• Split-brain
• Número de réplicas• Réplicas migram para outros servidores
• Status do cluster• Green: todos shards e réplicas ativos
• Yellow: algumas réplicas não estão ativas
• Red: shard não ativo
![Page 21: Treinamento Elasticsearch - Parte 2](https://reader034.fdocuments.in/reader034/viewer/2022042716/55a6727b1a28ab6e208b4651/html5/thumbnails/21.jpg)
Problemas comuns
• Configurações gerais• Memória
• Metade do disponível da máquina
• Evitar swap (bootstrap.mlockall: true)
• Não utilizar multicast
![Page 22: Treinamento Elasticsearch - Parte 2](https://reader034.fdocuments.in/reader034/viewer/2022042716/55a6727b1a28ab6e208b4651/html5/thumbnails/22.jpg)
Outros tópicos
• Dados geográficos
• Imagens
?