SlideShare uma empresa Scribd logo
1 de 22
Conceitos avançados de
Elasticsearch
Luiz Henrique Zambom Santana
24 de Fevereiro de 2015
Agenda
• Busca filtered
• Multifields
• Mapeamento
• Busca
• Buscas avançadas
• Fields
• Agregações
• Highlight
• Boost vs. Sort
• Cliente PHP
• Problemas comuns
Buscas - Filtered
POST /indice/post/_search
{
"query": {
"filtered": {
"query": {
"match": {
"relator": "ANTONIO"
}
},
"filter": {
"range": {
“data": {
“lte": "now - 1d / d"
}
}
}
}
}
}
Multifields - Mapeamento
POST /indice/post/_mapping
{
"processo": {
"properties": {
…
"descricao": {
"type": "string",
"fields": {
"raw": {
"type": "string",
"index": "not_analyzed"
}
}
},
…
}
}
Multifields - Busca
POST /indice/post/_search
{
"query": {
"match": {
"assunto.raw": "CONTRATO/REGISTRO"
}
}
}
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": {
Fields
• Forma de diminuir a quantidade de dados na rede
POST /indice/post/_search
{
"fields" : "descricao, relator",
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"
}
}
}
Highlight
POST /indice/post/_search
{
"query": {
…
},
"aggregations": {
…
},
"highlight" : {
"fields" : {
"descricao" : {"force_source" : true}
}
}
}
Paginação
POST /indice/post/_search
{
"fields" : "descricao",
"from" : 0, "size" : 10,
"sort" : [
Sort
POST /indice/post/_search
{
"fields" : "descricao",
"from" : 0, "size" : 10,
"sort" : [
"_score",
“data",
“relator"
],
Boost
"must": [
{
"prefix": {
"relator": "ANTONIO",
"boost": "500"
}
}
],
Suggestions
…
"suggest": {
"my-suggestion": {
"text": "carro",
"term": {
"field": "descricao"
}
}
}
Fuzziness
…
"query": {
"match": {
"descricao": "caro",
"fuzziness": "1"
}
},
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
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
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
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
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
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
Problemas comuns
• Configurações gerais
• Memória
• Metade do disponível da máquina
• Evitar swap (bootstrap.mlockall: true)
• Não utilizar multicast
Outros tópicos
• Dados geográficos
• Imagens
?

Mais conteúdo relacionado

Mais procurados

Curso mongo db com php
Curso mongo db com phpCurso mongo db com php
Curso mongo db com phpSuissa
 
Desenvolvimento de aplicações PHP com MongoDB
Desenvolvimento de aplicações PHP com MongoDBDesenvolvimento de aplicações PHP com MongoDB
Desenvolvimento de aplicações PHP com MongoDBAri Stopassola Junior
 
Instanciando a Arquitetura Lambda com GraphX e Elasticsearch 2.0 em uma apl...
Instanciando a Arquitetura Lambda com  GraphX e Elasticsearch 2.0  em uma apl...Instanciando a Arquitetura Lambda com  GraphX e Elasticsearch 2.0  em uma apl...
Instanciando a Arquitetura Lambda com GraphX e Elasticsearch 2.0 em uma apl...Luiz Henrique Zambom Santana
 
MongoDB - Tudo o que você precisa saber
MongoDB - Tudo o que você precisa saberMongoDB - Tudo o que você precisa saber
MongoDB - Tudo o que você precisa saberChristiano Anderson
 
Minicurso Epoca mongoDB
Minicurso Epoca mongoDBMinicurso Epoca mongoDB
Minicurso Epoca mongoDBLelyBarros
 
Primeiros passos com a API do Zabbix
Primeiros passos com a API do ZabbixPrimeiros passos com a API do Zabbix
Primeiros passos com a API do ZabbixJanssen Lima
 
MongoDB: Uma forma diferente de pensar no desenvolvimento
MongoDB: Uma forma diferente de pensar no desenvolvimento MongoDB: Uma forma diferente de pensar no desenvolvimento
MongoDB: Uma forma diferente de pensar no desenvolvimento Marcos Thomaz
 
Modelando aplicação em documento - MongoDB
Modelando aplicação em documento - MongoDBModelando aplicação em documento - MongoDB
Modelando aplicação em documento - MongoDBThiago Avelino
 
Mini-Curso de MongoDB
Mini-Curso de MongoDBMini-Curso de MongoDB
Mini-Curso de MongoDBBrunno Gomes
 
Introdução ao MongoDB
Introdução ao MongoDBIntrodução ao MongoDB
Introdução ao MongoDBElaine Naomi
 
Mongo DB
Mongo DBMongo DB
Mongo DBdist_bp
 
MongoDB - Apresentação
MongoDB - ApresentaçãoMongoDB - Apresentação
MongoDB - ApresentaçãoTerra / Neo
 
Nosql e BD Orientados a Documentos
Nosql e BD Orientados a DocumentosNosql e BD Orientados a Documentos
Nosql e BD Orientados a DocumentosYuri Adams
 

Mais procurados (20)

Curso mongo db com php
Curso mongo db com phpCurso mongo db com php
Curso mongo db com php
 
Desenvolvimento de aplicações PHP com MongoDB
Desenvolvimento de aplicações PHP com MongoDBDesenvolvimento de aplicações PHP com MongoDB
Desenvolvimento de aplicações PHP com MongoDB
 
Instanciando a Arquitetura Lambda com GraphX e Elasticsearch 2.0 em uma apl...
Instanciando a Arquitetura Lambda com  GraphX e Elasticsearch 2.0  em uma apl...Instanciando a Arquitetura Lambda com  GraphX e Elasticsearch 2.0  em uma apl...
Instanciando a Arquitetura Lambda com GraphX e Elasticsearch 2.0 em uma apl...
 
Workshop de ELK - EmergiNet
Workshop de ELK - EmergiNetWorkshop de ELK - EmergiNet
Workshop de ELK - EmergiNet
 
Mongo + php
Mongo + phpMongo + php
Mongo + php
 
MongoDB - Tudo o que você precisa saber
MongoDB - Tudo o que você precisa saberMongoDB - Tudo o que você precisa saber
MongoDB - Tudo o que você precisa saber
 
Minicurso Epoca mongoDB
Minicurso Epoca mongoDBMinicurso Epoca mongoDB
Minicurso Epoca mongoDB
 
Primeiros passos com a API do Zabbix
Primeiros passos com a API do ZabbixPrimeiros passos com a API do Zabbix
Primeiros passos com a API do Zabbix
 
MongoDB: Uma forma diferente de pensar no desenvolvimento
MongoDB: Uma forma diferente de pensar no desenvolvimento MongoDB: Uma forma diferente de pensar no desenvolvimento
MongoDB: Uma forma diferente de pensar no desenvolvimento
 
Elasticsearch
ElasticsearchElasticsearch
Elasticsearch
 
2011 01-18 mongo-db
2011 01-18 mongo-db2011 01-18 mongo-db
2011 01-18 mongo-db
 
#5 CRUD no MongoDB
#5   CRUD  no MongoDB#5   CRUD  no MongoDB
#5 CRUD no MongoDB
 
Modelando aplicação em documento - MongoDB
Modelando aplicação em documento - MongoDBModelando aplicação em documento - MongoDB
Modelando aplicação em documento - MongoDB
 
Node.js: serious business
Node.js: serious businessNode.js: serious business
Node.js: serious business
 
Mini-Curso de MongoDB
Mini-Curso de MongoDBMini-Curso de MongoDB
Mini-Curso de MongoDB
 
MongoDB - Iniciando e Conhecendo
MongoDB - Iniciando e ConhecendoMongoDB - Iniciando e Conhecendo
MongoDB - Iniciando e Conhecendo
 
Introdução ao MongoDB
Introdução ao MongoDBIntrodução ao MongoDB
Introdução ao MongoDB
 
Mongo DB
Mongo DBMongo DB
Mongo DB
 
MongoDB - Apresentação
MongoDB - ApresentaçãoMongoDB - Apresentação
MongoDB - Apresentação
 
Nosql e BD Orientados a Documentos
Nosql e BD Orientados a DocumentosNosql e BD Orientados a Documentos
Nosql e BD Orientados a Documentos
 

Semelhante a Treinamento Elasticsearch - Parte 2

Caçadores de Mitos: A virtualização dos dados pode sustentar o desempenho com...
Caçadores de Mitos: A virtualização dos dados pode sustentar o desempenho com...Caçadores de Mitos: A virtualização dos dados pode sustentar o desempenho com...
Caçadores de Mitos: A virtualização dos dados pode sustentar o desempenho com...Denodo
 
Apresentação Projeto Final Graduação UFF
Apresentação Projeto Final Graduação UFFApresentação Projeto Final Graduação UFF
Apresentação Projeto Final Graduação UFFBianca Caruso da Paixão
 
Big data e PostgreSQL
Big data e PostgreSQLBig data e PostgreSQL
Big data e PostgreSQLEuler Taveira
 
Introdução ao Solr e Faceted Search
Introdução ao Solr e Faceted SearchIntrodução ao Solr e Faceted Search
Introdução ao Solr e Faceted SearchMichel Bottan
 
Resumo da Sessão "Effective Geodatabase Programming" do Esri DevSummit 2012
Resumo da Sessão "Effective Geodatabase Programming" do Esri DevSummit 2012 Resumo da Sessão "Effective Geodatabase Programming" do Esri DevSummit 2012
Resumo da Sessão "Effective Geodatabase Programming" do Esri DevSummit 2012 Bruno Caimar
 
DevCommerce Conference 2016 - Workshop: Desenvolvimento Integrado, Desacoplad...
DevCommerce Conference 2016 - Workshop: Desenvolvimento Integrado, Desacoplad...DevCommerce Conference 2016 - Workshop: Desenvolvimento Integrado, Desacoplad...
DevCommerce Conference 2016 - Workshop: Desenvolvimento Integrado, Desacoplad...iMasters
 
Document store e Mongodb
Document store e MongodbDocument store e Mongodb
Document store e MongodbAline Ferreira
 
Analise de Performance Usando o SO
Analise de Performance Usando o SOAnalise de Performance Usando o SO
Analise de Performance Usando o SORaul Oliveira
 
SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)
SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)
SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)Dirceu Resende
 
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0Marcos William Valentini
 
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0Marcos William Valentini
 
MongoDB Aggregation Framework
MongoDB Aggregation FrameworkMongoDB Aggregation Framework
MongoDB Aggregation FrameworkLeandro Domingues
 
Planejamento de Capacidade Técnicas e Ferramentas
Planejamento de Capacidade Técnicas e FerramentasPlanejamento de Capacidade Técnicas e Ferramentas
Planejamento de Capacidade Técnicas e Ferramentasluanrjesus
 
Palestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAPalestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAThiago Cifani
 
Queries em Big Data: Bancos de dados em GPU
Queries em Big Data: Bancos de dados em GPUQueries em Big Data: Bancos de dados em GPU
Queries em Big Data: Bancos de dados em GPUTiago Vinicius
 
Big Query - Escalabilidade Infinita para os seus Dados
Big Query  - Escalabilidade Infinita para os seus DadosBig Query  - Escalabilidade Infinita para os seus Dados
Big Query - Escalabilidade Infinita para os seus DadosAlvaro Viebrantz
 
PostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardoPostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardoelliando dias
 

Semelhante a Treinamento Elasticsearch - Parte 2 (20)

Html5 Aula 4
Html5 Aula 4Html5 Aula 4
Html5 Aula 4
 
Caçadores de Mitos: A virtualização dos dados pode sustentar o desempenho com...
Caçadores de Mitos: A virtualização dos dados pode sustentar o desempenho com...Caçadores de Mitos: A virtualização dos dados pode sustentar o desempenho com...
Caçadores de Mitos: A virtualização dos dados pode sustentar o desempenho com...
 
Apresentação Projeto Final Graduação UFF
Apresentação Projeto Final Graduação UFFApresentação Projeto Final Graduação UFF
Apresentação Projeto Final Graduação UFF
 
Big data e PostgreSQL
Big data e PostgreSQLBig data e PostgreSQL
Big data e PostgreSQL
 
Jj08 otimizacao
Jj08 otimizacaoJj08 otimizacao
Jj08 otimizacao
 
Introdução ao Solr e Faceted Search
Introdução ao Solr e Faceted SearchIntrodução ao Solr e Faceted Search
Introdução ao Solr e Faceted Search
 
Otimizando a performance com in-memory no SQL 2016
Otimizando a performance com in-memory no SQL 2016Otimizando a performance com in-memory no SQL 2016
Otimizando a performance com in-memory no SQL 2016
 
Resumo da Sessão "Effective Geodatabase Programming" do Esri DevSummit 2012
Resumo da Sessão "Effective Geodatabase Programming" do Esri DevSummit 2012 Resumo da Sessão "Effective Geodatabase Programming" do Esri DevSummit 2012
Resumo da Sessão "Effective Geodatabase Programming" do Esri DevSummit 2012
 
DevCommerce Conference 2016 - Workshop: Desenvolvimento Integrado, Desacoplad...
DevCommerce Conference 2016 - Workshop: Desenvolvimento Integrado, Desacoplad...DevCommerce Conference 2016 - Workshop: Desenvolvimento Integrado, Desacoplad...
DevCommerce Conference 2016 - Workshop: Desenvolvimento Integrado, Desacoplad...
 
Document store e Mongodb
Document store e MongodbDocument store e Mongodb
Document store e Mongodb
 
Analise de Performance Usando o SO
Analise de Performance Usando o SOAnalise de Performance Usando o SO
Analise de Performance Usando o SO
 
SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)
SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)
SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)
 
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
 
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
 
MongoDB Aggregation Framework
MongoDB Aggregation FrameworkMongoDB Aggregation Framework
MongoDB Aggregation Framework
 
Planejamento de Capacidade Técnicas e Ferramentas
Planejamento de Capacidade Técnicas e FerramentasPlanejamento de Capacidade Técnicas e Ferramentas
Planejamento de Capacidade Técnicas e Ferramentas
 
Palestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAPalestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVA
 
Queries em Big Data: Bancos de dados em GPU
Queries em Big Data: Bancos de dados em GPUQueries em Big Data: Bancos de dados em GPU
Queries em Big Data: Bancos de dados em GPU
 
Big Query - Escalabilidade Infinita para os seus Dados
Big Query  - Escalabilidade Infinita para os seus DadosBig Query  - Escalabilidade Infinita para os seus Dados
Big Query - Escalabilidade Infinita para os seus Dados
 
PostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardoPostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardo
 

Mais de Luiz Henrique Zambom Santana

Perspectives on the use of data in Agriculture - Luiz Santana - Leaf Agricult...
Perspectives on the use of data in Agriculture - Luiz Santana - Leaf Agricult...Perspectives on the use of data in Agriculture - Luiz Santana - Leaf Agricult...
Perspectives on the use of data in Agriculture - Luiz Santana - Leaf Agricult...Luiz Henrique Zambom Santana
 
Apache Sedona: how to process petabytes of agronomic data with Spark
Apache Sedona: how to process petabytes of agronomic data with SparkApache Sedona: how to process petabytes of agronomic data with Spark
Apache Sedona: how to process petabytes of agronomic data with SparkLuiz Henrique Zambom Santana
 
De Arquiteto para Gerente: como debugar uma equipe
De Arquiteto para Gerente: como debugar uma equipeDe Arquiteto para Gerente: como debugar uma equipe
De Arquiteto para Gerente: como debugar uma equipeLuiz Henrique Zambom Santana
 
VoltDB: as vantagens e os desafios dos banco de dados NewSQL
VoltDB: as vantagens e os desafios dos banco de dados NewSQLVoltDB: as vantagens e os desafios dos banco de dados NewSQL
VoltDB: as vantagens e os desafios dos banco de dados NewSQLLuiz Henrique Zambom Santana
 
Uma visão sobre Fast-Data: Spark, VoltDB e Elasticsearch
Uma visão sobre Fast-Data: Spark, VoltDB e ElasticsearchUma visão sobre Fast-Data: Spark, VoltDB e Elasticsearch
Uma visão sobre Fast-Data: Spark, VoltDB e ElasticsearchLuiz Henrique Zambom Santana
 
Workload-Aware RDF Partitioning and SPARQL Query Caching for Massive RDF Gra...
Workload-Aware RDF Partitioning  and SPARQL Query Caching for Massive RDF Gra...Workload-Aware RDF Partitioning  and SPARQL Query Caching for Massive RDF Gra...
Workload-Aware RDF Partitioning and SPARQL Query Caching for Massive RDF Gra...Luiz Henrique Zambom Santana
 
A middleware for storing massive RDF graphs into NoSQL
A middleware for storing massive RDF graphs into NoSQLA middleware for storing massive RDF graphs into NoSQL
A middleware for storing massive RDF graphs into NoSQLLuiz Henrique Zambom Santana
 
A Workload-Aware Middleware for Storing Massive RDF Graphs into NoSQL Databases
A Workload-Aware Middleware for Storing Massive RDF Graphs into NoSQL DatabasesA Workload-Aware Middleware for Storing Massive RDF Graphs into NoSQL Databases
A Workload-Aware Middleware for Storing Massive RDF Graphs into NoSQL DatabasesLuiz Henrique Zambom Santana
 
Como modelar, integrar e desenvolver aplicações com múltiplos bancos de dados...
Como modelar, integrar e desenvolver aplicações com múltiplos bancos de dados...Como modelar, integrar e desenvolver aplicações com múltiplos bancos de dados...
Como modelar, integrar e desenvolver aplicações com múltiplos bancos de dados...Luiz Henrique Zambom Santana
 
Design of Experiments on Federator Polystore Architecture
Design of Experiments on Federator Polystore ArchitectureDesign of Experiments on Federator Polystore Architecture
Design of Experiments on Federator Polystore ArchitectureLuiz Henrique Zambom Santana
 
An Approach for RDF-based Semantic Access to NoSQL Repositories
An Approach for RDF-based Semantic Access to NoSQL RepositoriesAn Approach for RDF-based Semantic Access to NoSQL Repositories
An Approach for RDF-based Semantic Access to NoSQL RepositoriesLuiz Henrique Zambom Santana
 

Mais de Luiz Henrique Zambom Santana (20)

Perspectives on the use of data in Agriculture - Luiz Santana - Leaf Agricult...
Perspectives on the use of data in Agriculture - Luiz Santana - Leaf Agricult...Perspectives on the use of data in Agriculture - Luiz Santana - Leaf Agricult...
Perspectives on the use of data in Agriculture - Luiz Santana - Leaf Agricult...
 
Apache Sedona: how to process petabytes of agronomic data with Spark
Apache Sedona: how to process petabytes of agronomic data with SparkApache Sedona: how to process petabytes of agronomic data with Spark
Apache Sedona: how to process petabytes of agronomic data with Spark
 
De Arquiteto para Gerente: como debugar uma equipe
De Arquiteto para Gerente: como debugar uma equipeDe Arquiteto para Gerente: como debugar uma equipe
De Arquiteto para Gerente: como debugar uma equipe
 
VoltDB: as vantagens e os desafios dos banco de dados NewSQL
VoltDB: as vantagens e os desafios dos banco de dados NewSQLVoltDB: as vantagens e os desafios dos banco de dados NewSQL
VoltDB: as vantagens e os desafios dos banco de dados NewSQL
 
IBM Watson, Apache Spark ou TensorFlow?
IBM Watson, Apache Spark ou TensorFlow?IBM Watson, Apache Spark ou TensorFlow?
IBM Watson, Apache Spark ou TensorFlow?
 
Uma visão sobre Fast-Data: Spark, VoltDB e Elasticsearch
Uma visão sobre Fast-Data: Spark, VoltDB e ElasticsearchUma visão sobre Fast-Data: Spark, VoltDB e Elasticsearch
Uma visão sobre Fast-Data: Spark, VoltDB e Elasticsearch
 
Banco de dados nas nuvens - aula 3
Banco de dados nas nuvens - aula 3Banco de dados nas nuvens - aula 3
Banco de dados nas nuvens - aula 3
 
Banco de dados nas nuvens - aula 2
Banco de dados nas nuvens - aula 2Banco de dados nas nuvens - aula 2
Banco de dados nas nuvens - aula 2
 
Banco de dados nas nuvens - aula 1
Banco de dados nas nuvens - aula 1Banco de dados nas nuvens - aula 1
Banco de dados nas nuvens - aula 1
 
Workload-Aware RDF Partitioning and SPARQL Query Caching for Massive RDF Gra...
Workload-Aware RDF Partitioning  and SPARQL Query Caching for Massive RDF Gra...Workload-Aware RDF Partitioning  and SPARQL Query Caching for Massive RDF Gra...
Workload-Aware RDF Partitioning and SPARQL Query Caching for Massive RDF Gra...
 
A middleware for storing massive RDF graphs into NoSQL
A middleware for storing massive RDF graphs into NoSQLA middleware for storing massive RDF graphs into NoSQL
A middleware for storing massive RDF graphs into NoSQL
 
A Workload-Aware Middleware for Storing Massive RDF Graphs into NoSQL Databases
A Workload-Aware Middleware for Storing Massive RDF Graphs into NoSQL DatabasesA Workload-Aware Middleware for Storing Massive RDF Graphs into NoSQL Databases
A Workload-Aware Middleware for Storing Massive RDF Graphs into NoSQL Databases
 
Normalização
NormalizaçãoNormalização
Normalização
 
SQL Joins
SQL JoinsSQL Joins
SQL Joins
 
Consultas básicas em SQL
Consultas básicas em SQLConsultas básicas em SQL
Consultas básicas em SQL
 
Processamento em Big Data
Processamento em Big DataProcessamento em Big Data
Processamento em Big Data
 
Seminário de Andamento de Doutorado
Seminário de Andamento de DoutoradoSeminário de Andamento de Doutorado
Seminário de Andamento de Doutorado
 
Como modelar, integrar e desenvolver aplicações com múltiplos bancos de dados...
Como modelar, integrar e desenvolver aplicações com múltiplos bancos de dados...Como modelar, integrar e desenvolver aplicações com múltiplos bancos de dados...
Como modelar, integrar e desenvolver aplicações com múltiplos bancos de dados...
 
Design of Experiments on Federator Polystore Architecture
Design of Experiments on Federator Polystore ArchitectureDesign of Experiments on Federator Polystore Architecture
Design of Experiments on Federator Polystore Architecture
 
An Approach for RDF-based Semantic Access to NoSQL Repositories
An Approach for RDF-based Semantic Access to NoSQL RepositoriesAn Approach for RDF-based Semantic Access to NoSQL Repositories
An Approach for RDF-based Semantic Access to NoSQL Repositories
 

Treinamento Elasticsearch - Parte 2

  • 1. Conceitos avançados de Elasticsearch Luiz Henrique Zambom Santana 24 de Fevereiro de 2015
  • 2. Agenda • Busca filtered • Multifields • Mapeamento • Busca • Buscas avançadas • Fields • Agregações • Highlight • Boost vs. Sort • Cliente PHP • Problemas comuns
  • 3. Buscas - Filtered POST /indice/post/_search { "query": { "filtered": { "query": { "match": { "relator": "ANTONIO" } }, "filter": { "range": { “data": { “lte": "now - 1d / d" } } } } } }
  • 4. Multifields - Mapeamento POST /indice/post/_mapping { "processo": { "properties": { … "descricao": { "type": "string", "fields": { "raw": { "type": "string", "index": "not_analyzed" } } }, … } }
  • 5. Multifields - Busca POST /indice/post/_search { "query": { "match": { "assunto.raw": "CONTRATO/REGISTRO" } } }
  • 6. 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": {
  • 7. Fields • Forma de diminuir a quantidade de dados na rede POST /indice/post/_search { "fields" : "descricao, relator",
  • 8. 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" } } }
  • 9. Highlight POST /indice/post/_search { "query": { … }, "aggregations": { … }, "highlight" : { "fields" : { "descricao" : {"force_source" : true} } } }
  • 10. Paginação POST /indice/post/_search { "fields" : "descricao", "from" : 0, "size" : 10, "sort" : [
  • 11. Sort POST /indice/post/_search { "fields" : "descricao", "from" : 0, "size" : 10, "sort" : [ "_score", “data", “relator" ],
  • 12. Boost "must": [ { "prefix": { "relator": "ANTONIO", "boost": "500" } } ],
  • 13. Suggestions … "suggest": { "my-suggestion": { "text": "carro", "term": { "field": "descricao" } } }
  • 14. Fuzziness … "query": { "match": { "descricao": "caro", "fuzziness": "1" } },
  • 15. 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
  • 16. 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
  • 17. 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
  • 18. 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
  • 19. 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
  • 20. 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
  • 21. Problemas comuns • Configurações gerais • Memória • Metade do disponível da máquina • Evitar swap (bootstrap.mlockall: true) • Não utilizar multicast
  • 22. Outros tópicos • Dados geográficos • Imagens ?