+ All Categories
Home > Technology > Treinamento Elasticsearch - Parte 2

Treinamento Elasticsearch - Parte 2

Date post: 15-Jul-2015
Category:
Upload: luiz-henrique-zambom-santana
View: 124 times
Download: 1 times
Share this document with a friend
22
Conceitos avançados de Elasticsearch Luiz Henrique Zambom Santana 24 de Fevereiro de 2015
Transcript
Page 1: Treinamento Elasticsearch - Parte 2

Conceitos avançados de Elasticsearch

Luiz Henrique Zambom Santana

24 de Fevereiro de 2015

Page 2: Treinamento Elasticsearch - Parte 2

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

Buscas - FilteredPOST /indice/post/_search

{

"query": {

"filtered": {

"query": {

"match": {

"relator": "ANTONIO"

}

},

"filter": {

"range": {

“data": {

“lte": "now - 1d / d"

}

}

}

}

}

}

Page 4: Treinamento Elasticsearch - Parte 2

Multifields - MapeamentoPOST /indice/post/_mapping

{

"processo": {

"properties": {

"descricao": {

"type": "string",

"fields": {

"raw": {

"type": "string",

"index": "not_analyzed"

}

}

},

}

}

Page 5: Treinamento Elasticsearch - Parte 2

Multifields - Busca

POST /indice/post/_search

{

"query": {

"match": {

"assunto.raw": "CONTRATO/REGISTRO"

}

}

}

Page 6: Treinamento Elasticsearch - Parte 2

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

Fields

• Forma de diminuir a quantidade de dados na rede

POST /indice/post/_search

{

"fields" : "descricao, relator",

Page 8: Treinamento Elasticsearch - Parte 2

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

Highlight

POST /indice/post/_search

{

"query": {

},

"aggregations": {

},

"highlight" : {

"fields" : {

"descricao" : {"force_source" : true}

}

}

}

Page 10: Treinamento Elasticsearch - Parte 2

Paginação

POST /indice/post/_search

{

"fields" : "descricao",

"from" : 0, "size" : 10,

"sort" : [

Page 11: Treinamento Elasticsearch - Parte 2

Sort

POST /indice/post/_search

{

"fields" : "descricao",

"from" : 0, "size" : 10,

"sort" : [

"_score",

“data",

“relator"

],

Page 12: Treinamento Elasticsearch - Parte 2

Boost

"must": [

{

"prefix": {

"relator": "ANTONIO",

"boost": "500"

}

}

],

Page 13: Treinamento Elasticsearch - Parte 2

Suggestions

"suggest": {

"my-suggestion": {

"text": "carro",

"term": {

"field": "descricao"

}

}

}

Page 14: Treinamento Elasticsearch - Parte 2

Fuzziness

"query": {

"match": {

"descricao": "caro",

"fuzziness": "1"

}

},

Page 15: Treinamento Elasticsearch - Parte 2

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

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

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

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

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

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

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

Outros tópicos

• Dados geográficos

• Imagens

?


Recommended