SlideShare uma empresa Scribd logo
1 de 43
Person someone = new Person();
someone.setName("Thiago Barradas");
Job job = new Job();
job.setCompany("MundiPagg");
job.setTitle("Software Developer");
job.setCurrentSkills([".NET","ElasticSearch","APIs"]);
Study study1 = new Study();
study1.setLevel("Graduação");
study1.setCourse("Ciência da Computação");
study1.setCollege("UEZO");
Study study2 = new Study();
study2.setLevel("Pós Graduação");
study2.setCourse("MIT Mobile Development");
study2.setCollege("INFNET");
Contact contact = new Contact();
contact.setEmail("tbarradas@mundipagg.com");
contact.setPhoneNumber("21 99329-9143");
contact.setLinkedin("thiagobarradas");
someone.setJob(job);
someone.addStudy(study1);
someone.addStudy(study2);
someone.setContact(contact);
Person someone = new Person();
someone.setName("Brunelli Cupello");
Job job = new Job();
job.setCompany("MundiPagg");
job.setTitle("Software Developer");
job.setCurrentSkills([".NET","ElasticSearch","APIs"]);
Study study = new Study();
study1.setLevel("Graduando");
study1.setCourse("Engenharia da Computação");
study1.setCollege("IME");
Contact contact = new Contact();
contact.setEmail("bcupello@mundipagg.com");
contact.setPhoneNumber("21 99582-7980");
contact.setLinkedin("brunellicupello");
someone.setJob(job);
someone.addStudy(study);
someone.setContact(contact);
Tópicos da Apresentação
● Sobre o ElasticSearch
● Conceitos
● Instalação
● Mapping & Analyzers
● Unidades
● Filters & Querys
● Pagination & Scroll
● Autocomplete
● Highlight
● Aggregations
● Geolocation
● SDK Java
● Backup
● Plugins
Sobre o ElasticSearch
Sobre o ElasticSearch
● É um servidor de buscas distribuído;
● Alta disponibilidade;
● Facilmente escalável;
● Desenvolvido em Java;
● Baseado no Apache Lucene;
● Open Source;
● Comunicação API Rest (Json/HTTP);
● Armazenamento de Documentos;
● SDK para diversas linguagens;
Sobre o ElasticSearch
● Recuperação rápida de documentos;
● Análise de Logs;
● Buscas full-text / geolocation;
● Aggregations & Analytics;
● Alerta e Classificação;
● Score Functions;
● Sugestões e Destaques;
● Documentação bem completa;
● Curva de aprendizado fácil;
Quem usa?
Conceitos
Documentos
● É armazenado sob um Id único;
● Documentos são objetos Json;
● Tipos de Dados:
● String;
● Number;
● Geopoint;
● Geoshape;
● Bool;
● Date;
● Ipv4;
● Array;
● Object;
Indíce e Tipos
Banco Relacional ElasticSearch
Banco Índice
Tabela Tipo
Índice Token, Indíce
● Um índice é um container de dados. Cada nó pode hospedar diversos índices;
● Um tipo representa uma classe de documentos semelhantes, mesma estrutura;
● Um tipo possui seus campos definidos e seus campos possuem tokens
(índices) que fazem referência ao documento;
Analogia com banco relacional para facilitar o entendimento:
Cluster, Nós e Shards
● Cluster é um conjunto de nós trabalhando juntos;
● Todos os nós se comunicam entre si;
● Shard é um “pedaço” único de um índice, que pode estar em quaquer nó;
● Um shard também pode (e deve) possuir réplicas espalhadas em outros nós;
Instalação
Linux (Ubuntu)
> sudo add-apt-repository ppa:webupd8team/java
> sudo apt-get update
> sudo apt-get install oracle-java7-installer
Instalando o Java
> wget https://download.elastic.co/elasticsearch/elasticsearch/elasticsearch-1.7.1.deb
> sudo dpkg -i elasticsearch-1.7.1.deb
Instalando o ElasticSearch
> sudo service elasticsearch start
Iniciando o serviço
Windows
Instalando o Java
Download:
https://java.com/pt_BR/download/
Após a instalação, definir variável de ambiente do windows
JAVA_HOME com o caminho da instalação do JRE.
Instalando o ElasticSearch
● Download ZIP https://www.elastic.co/downloads/elasticsearch
● Descomprimir arquivo, acessar o diretório dos arquivos via CMD
> .service.bat install
> .service.bat start
Verificando a Instalação
Acesse: http://localhost:9200
Mapping & Analyzers
Mapping
● É o processo de definição de como um
documento e seus campos são
armazenados e indexados;
● Define os tipos de dados dos campos
(string, date, integer, etc);
● É possível definir o tipo de indexação do
campo (se é analisável ou não);
● Permite a criação de sub campos;
● Permite a definição de templates para
campos adicionados dinamicamente;
Analyzer
● São responsáveis por tratar os dados e
gerar os índices associados a eles;
● O dado é quebrado em diversos tokens a
partir dos Tokenizers e Token Filters;
● Os tokens são normalizados;
● Esse processo é aplicado tanto na
indexação dos documentos quanto na
busca;
● Existem diversos tipos de analisadores,
para idiomas específicos, etc, e com
possibilidade de customização;
Índice Invertido
● Projetado para permitir uma busca full-text
extremamente rápida;
● Consiste em uma lista única com todas as palavras que
aparecem nos documentos e para cada palavra uma
lista de documentos que ela aparece;
Exemplo:
● The quick brown fox jumped over the lazy dog
● Quick brown foxes leap over lazy dogs in summer
Índice Invertido
Exemplo:
● The quick brown fox jumped over the lazy dog
● Quick brown foxes leap over lazy dogs in summer
Uma busca por “quick brown”
Índice Invertido
Normalização
Unidades
Unidades
y Ano
M Mês
w Semana
d Dia
h Hora
m Minuto
s Segundo
ms Milissegundo
b Byte
kb Kilobyte
mb Megabyte
gb Gigabyte
tb Terabyte
mi Milhas
yd Jardas
ft Pés
in Polegadas
km Quilômetros
m Metros
cm Centímetros
mm Milímetros
nmi Milhas naúticas
Tempo Armazenamento Distância
Filters & Querys
Filters & Querys
Filter Query
Deve ser usado para os tipos string (not
analyzed), integer, long, date, etc
Deve ser utilizado para o tipo string
(analyzed)
Usa o próprio valor recebido como token Divide valor recebido em vários tokens e
normaliza-os de acordo com o analisador
definido
Não gera relevância/pontuação (score) Gera relevância/pontuação (score)
● Filters e Querys são utilizados para executar as consultas no ElasticSearch.
Filters & Querys
Pagination & Scroll
Autocomplete
Highlight
Aggregations
Geolocation
EXEMPLOS NA PRÁTICA!
SDK Java
SDK Java - Jest
Para facilitar o desenvolvimento de aplicações utilizando ElasticSearch, existem diversas
SDKs para as principais linguagens. Uma das principais para integração com Java é o Jest.
● Disponível no Maven;
● Versões compatíveis para o ElasticSearch nas versões 0.X, 1.X e 2.X;
● Contribuição constante no projeto;
SDK Java - Jest
Instanciando o Client
Criando um Índice
Indexando um documento
SDK Java - Jest
Buscando documentos
Obtendo documento específico pelo ID
Buscando documentos Deletando documento
Inserindo documentos em massa (bulk)
Backup
Backup
PUT /_snapshot/meu_repo
{
"type":"fs",
"settings": {
"location":"C:es-bkp"
}
}
CRIAR REPOSITÓRIO
PUT /_snapshot/meu_repo/meu_snap
CRIAR SNAPSHOT
GET /_snapshot/meu_repo/_all
LISTAR SNAPSHOTS
POST /_snapshot/meu_repo/meu_snap/_restore
RESTAURAR SNAPSHOT
Plugins
Logstash
“Collect, Enrich & Data Transport”
● Processa quaisquer dado, de diversas fontes;
● Centralizar o processamento de dados de todos os tipos;
● Normalizar variando esquema e formatos;
● Customização rápida para formatos de log;
● Permite facilmente adicionar plugins para fontes de dados personalizados;
Kibana
“Explore & Visualize Your Data”
● Dashboard para visualização de dados;
● Flexibilidade de análise e plataforma para visualização;
● Resumo em real-time e gráficos de streaming de dados;
● Interface intuitiva para uma variedade de usuários;
● Compartilhamento instantâneo e incorporação de dashboards;
Kibana
Watcher
“Alerting for Elasticsearch”
● Alerta e notificação;
● Analisar histórico de eventos e dados;
● Definição de condições, cronograma, ações;
● Integração com diversas ferramentas como JIRA, HipChat e Slack;
Shield
“Security for ElasticSearch”
● Provedor de segurança avançada ao seu cluster;
● Acesso autenticado para diversos usuários;
● Recursos avançados de criptografia;
● Acesso com base em funções/permissões, IP;
● Pode ser integrado ao AD /LDAP;
● Logs de auditoria com acessos e sessões (HIPAA, PCI DSS, FISMA, ISO);
OBRIGADO! :)
Thiago Barradas
Email: tbarradas@mundipagg.com
Telefone: (21) 99329-9143
LinkedIn: thiagobarradas
Brunelli Cupello
Email: bcupello@mundipagg.com
Telefone: (21) 99582-7980
LinkedIn: brunellicupello

Mais conteúdo relacionado

Mais procurados

Apresentação maven
Apresentação mavenApresentação maven
Apresentação mavenAndré Justi
 
JavaEE 7, na era do cloud computing
JavaEE 7, na era do cloud computingJavaEE 7, na era do cloud computing
JavaEE 7, na era do cloud computingEder Magalhães
 
Java enterprise - testcontainers
Java enterprise - testcontainersJava enterprise - testcontainers
Java enterprise - testcontainersSandro Giacomozzi
 
Conhecendo o NuGet e utilizando com ASP.NET MVC
Conhecendo o NuGet e utilizando com ASP.NET MVCConhecendo o NuGet e utilizando com ASP.NET MVC
Conhecendo o NuGet e utilizando com ASP.NET MVCFabrício Lopes Sanchez
 
Android Core Aula 7 - Aplicações (Services, Broadcast Receivers, NDK/JNI)
Android Core Aula 7 - Aplicações (Services, Broadcast Receivers, NDK/JNI)Android Core Aula 7 - Aplicações (Services, Broadcast Receivers, NDK/JNI)
Android Core Aula 7 - Aplicações (Services, Broadcast Receivers, NDK/JNI)Felipe Silveira
 
JSF2 c/ PrimeFaces, RichFaces e ICEfaces
JSF2 c/ PrimeFaces, RichFaces e ICEfacesJSF2 c/ PrimeFaces, RichFaces e ICEfaces
JSF2 c/ PrimeFaces, RichFaces e ICEfacesEder Magalhães
 
Automatização de Infraestrutura com Jenkins
Automatização de Infraestrutura com JenkinsAutomatização de Infraestrutura com Jenkins
Automatização de Infraestrutura com JenkinsFelipe Santos
 
Spring 3: Uma Plataforma além do Framework
Spring 3: Uma Plataforma além do FrameworkSpring 3: Uma Plataforma além do Framework
Spring 3: Uma Plataforma além do FrameworkDr. Spock
 

Mais procurados (15)

Apresentação maven
Apresentação mavenApresentação maven
Apresentação maven
 
JavaEE 7, na era do cloud computing
JavaEE 7, na era do cloud computingJavaEE 7, na era do cloud computing
JavaEE 7, na era do cloud computing
 
Introdução ao maven
Introdução ao mavenIntrodução ao maven
Introdução ao maven
 
Aula maven
Aula   mavenAula   maven
Aula maven
 
Maven na prática
Maven na práticaMaven na prática
Maven na prática
 
Java enterprise - testcontainers
Java enterprise - testcontainersJava enterprise - testcontainers
Java enterprise - testcontainers
 
Conhecendo o NuGet e utilizando com ASP.NET MVC
Conhecendo o NuGet e utilizando com ASP.NET MVCConhecendo o NuGet e utilizando com ASP.NET MVC
Conhecendo o NuGet e utilizando com ASP.NET MVC
 
Java em 2021
Java em 2021Java em 2021
Java em 2021
 
Maven - Aula 01
Maven - Aula 01Maven - Aula 01
Maven - Aula 01
 
Android Core Aula 7 - Aplicações (Services, Broadcast Receivers, NDK/JNI)
Android Core Aula 7 - Aplicações (Services, Broadcast Receivers, NDK/JNI)Android Core Aula 7 - Aplicações (Services, Broadcast Receivers, NDK/JNI)
Android Core Aula 7 - Aplicações (Services, Broadcast Receivers, NDK/JNI)
 
JSF2 c/ PrimeFaces, RichFaces e ICEfaces
JSF2 c/ PrimeFaces, RichFaces e ICEfacesJSF2 c/ PrimeFaces, RichFaces e ICEfaces
JSF2 c/ PrimeFaces, RichFaces e ICEfaces
 
Maven
MavenMaven
Maven
 
Automatização de Infraestrutura com Jenkins
Automatização de Infraestrutura com JenkinsAutomatização de Infraestrutura com Jenkins
Automatização de Infraestrutura com Jenkins
 
Spring 3: Uma Plataforma além do Framework
Spring 3: Uma Plataforma além do FrameworkSpring 3: Uma Plataforma além do Framework
Spring 3: Uma Plataforma além do Framework
 
Maven - Aula 04
Maven  - Aula 04Maven  - Aula 04
Maven - Aula 04
 

Semelhante a Android DevConference - Elastic Search como ferramenta de busca em aplicações Android

Workshop Elasticsearch - Android Dev Conference 2016
Workshop Elasticsearch - Android Dev Conference 2016Workshop Elasticsearch - Android Dev Conference 2016
Workshop Elasticsearch - Android Dev Conference 2016Thiago Barradas
 
Palestra Elasticsearch - The Developers Conference - Floripa - 2017
Palestra Elasticsearch - The Developers Conference - Floripa - 2017Palestra Elasticsearch - The Developers Conference - Floripa - 2017
Palestra Elasticsearch - The Developers Conference - Floripa - 2017Thiago Barradas
 
TDC2017 | São Paulo - Trilha NOSQL How we figured out we had a SRE team at - ...
TDC2017 | São Paulo - Trilha NOSQL How we figured out we had a SRE team at - ...TDC2017 | São Paulo - Trilha NOSQL How we figured out we had a SRE team at - ...
TDC2017 | São Paulo - Trilha NOSQL How we figured out we had a SRE team at - ...tdc-globalcode
 
Palestra Elasticsearch - The Developers Conference - São Paulo - 2017
Palestra Elasticsearch - The Developers Conference - São Paulo - 2017Palestra Elasticsearch - The Developers Conference - São Paulo - 2017
Palestra Elasticsearch - The Developers Conference - São Paulo - 2017Thiago Barradas
 
Elasticsearch - O motor de busca que está mudando o mercado! @ PHPeste 2019
Elasticsearch - O motor de busca que está mudando o mercado! @ PHPeste 2019Elasticsearch - O motor de busca que está mudando o mercado! @ PHPeste 2019
Elasticsearch - O motor de busca que está mudando o mercado! @ PHPeste 2019Thiago Barradas
 
Desenvolvendo um buscador com PHP e Elasticsearch - Fernando Silva - Tchelinu...
Desenvolvendo um buscador com PHP e Elasticsearch - Fernando Silva - Tchelinu...Desenvolvendo um buscador com PHP e Elasticsearch - Fernando Silva - Tchelinu...
Desenvolvendo um buscador com PHP e Elasticsearch - Fernando Silva - Tchelinu...Tchelinux
 
TDC 2015 - Rails & Javascript: faça isso direito
TDC 2015 - Rails & Javascript: faça isso direitoTDC 2015 - Rails & Javascript: faça isso direito
TDC 2015 - Rails & Javascript: faça isso direitoCezinha Anjos
 
TDC2016POA | Trilha PHP - Desenvolvendo um buscador com PHP e Elasticsearch
TDC2016POA | Trilha PHP - Desenvolvendo um buscador com PHP e ElasticsearchTDC2016POA | Trilha PHP - Desenvolvendo um buscador com PHP e Elasticsearch
TDC2016POA | Trilha PHP - Desenvolvendo um buscador com PHP e Elasticsearchtdc-globalcode
 
Django e MongoDB - Python Brasil 7
Django e MongoDB - Python Brasil 7Django e MongoDB - Python Brasil 7
Django e MongoDB - Python Brasil 7Christiano Anderson
 
Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton
Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e CroutonMinicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton
Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e CroutonRicardo Longa
 
Ecosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javEcosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javJulio Viegas
 
Configuração de ativos de rede utilizando a abordagem infrastructure as code
Configuração de ativos de rede utilizando a abordagem infrastructure as codeConfiguração de ativos de rede utilizando a abordagem infrastructure as code
Configuração de ativos de rede utilizando a abordagem infrastructure as codeAécio Pires
 
Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo...
Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo...Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo...
Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo...Miguel Gallardo
 
Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Rafael Benevides
 
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)Carlos Duarte do Nascimento
 

Semelhante a Android DevConference - Elastic Search como ferramenta de busca em aplicações Android (20)

Workshop Elasticsearch - Android Dev Conference 2016
Workshop Elasticsearch - Android Dev Conference 2016Workshop Elasticsearch - Android Dev Conference 2016
Workshop Elasticsearch - Android Dev Conference 2016
 
Palestra Elasticsearch - The Developers Conference - Floripa - 2017
Palestra Elasticsearch - The Developers Conference - Floripa - 2017Palestra Elasticsearch - The Developers Conference - Floripa - 2017
Palestra Elasticsearch - The Developers Conference - Floripa - 2017
 
TDC2017 | São Paulo - Trilha NOSQL How we figured out we had a SRE team at - ...
TDC2017 | São Paulo - Trilha NOSQL How we figured out we had a SRE team at - ...TDC2017 | São Paulo - Trilha NOSQL How we figured out we had a SRE team at - ...
TDC2017 | São Paulo - Trilha NOSQL How we figured out we had a SRE team at - ...
 
Palestra Elasticsearch - The Developers Conference - São Paulo - 2017
Palestra Elasticsearch - The Developers Conference - São Paulo - 2017Palestra Elasticsearch - The Developers Conference - São Paulo - 2017
Palestra Elasticsearch - The Developers Conference - São Paulo - 2017
 
Elasticsearch - O motor de busca que está mudando o mercado! @ PHPeste 2019
Elasticsearch - O motor de busca que está mudando o mercado! @ PHPeste 2019Elasticsearch - O motor de busca que está mudando o mercado! @ PHPeste 2019
Elasticsearch - O motor de busca que está mudando o mercado! @ PHPeste 2019
 
Primeiros Passos Com Elasticsearch
Primeiros Passos Com ElasticsearchPrimeiros Passos Com Elasticsearch
Primeiros Passos Com Elasticsearch
 
Desenvolvendo um buscador com PHP e Elasticsearch - Fernando Silva - Tchelinu...
Desenvolvendo um buscador com PHP e Elasticsearch - Fernando Silva - Tchelinu...Desenvolvendo um buscador com PHP e Elasticsearch - Fernando Silva - Tchelinu...
Desenvolvendo um buscador com PHP e Elasticsearch - Fernando Silva - Tchelinu...
 
TDC 2015 - Rails & Javascript: faça isso direito
TDC 2015 - Rails & Javascript: faça isso direitoTDC 2015 - Rails & Javascript: faça isso direito
TDC 2015 - Rails & Javascript: faça isso direito
 
TDC2016POA | Trilha PHP - Desenvolvendo um buscador com PHP e Elasticsearch
TDC2016POA | Trilha PHP - Desenvolvendo um buscador com PHP e ElasticsearchTDC2016POA | Trilha PHP - Desenvolvendo um buscador com PHP e Elasticsearch
TDC2016POA | Trilha PHP - Desenvolvendo um buscador com PHP e Elasticsearch
 
Django e MongoDB - Python Brasil 7
Django e MongoDB - Python Brasil 7Django e MongoDB - Python Brasil 7
Django e MongoDB - Python Brasil 7
 
Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton
Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e CroutonMinicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton
Minicurso sobre AndroidAnnotations, GreenDAO, EventBus e Crouton
 
Node JS - Parte 1
Node JS - Parte 1Node JS - Parte 1
Node JS - Parte 1
 
Postgresql +python
Postgresql +pythonPostgresql +python
Postgresql +python
 
Postgre sql +python
Postgre sql +pythonPostgre sql +python
Postgre sql +python
 
Ecosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javEcosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_jav
 
Apres git geinfo2012
Apres git geinfo2012Apres git geinfo2012
Apres git geinfo2012
 
Configuração de ativos de rede utilizando a abordagem infrastructure as code
Configuração de ativos de rede utilizando a abordagem infrastructure as codeConfiguração de ativos de rede utilizando a abordagem infrastructure as code
Configuração de ativos de rede utilizando a abordagem infrastructure as code
 
Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo...
Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo...Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo...
Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo...
 
Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007
 
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
 

Mais de iMasters

O que você precisa saber para modelar bancos de dados NoSQL - Dani Monteiro
O que você precisa saber para modelar bancos de dados NoSQL - Dani MonteiroO que você precisa saber para modelar bancos de dados NoSQL - Dani Monteiro
O que você precisa saber para modelar bancos de dados NoSQL - Dani MonteiroiMasters
 
Postgres: wanted, beloved or dreaded? - Fabio Telles
Postgres: wanted, beloved or dreaded? - Fabio TellesPostgres: wanted, beloved or dreaded? - Fabio Telles
Postgres: wanted, beloved or dreaded? - Fabio TellesiMasters
 
Por que minha query esta lenta? - Suellen Moraes
Por que minha query esta lenta? - Suellen MoraesPor que minha query esta lenta? - Suellen Moraes
Por que minha query esta lenta? - Suellen MoraesiMasters
 
Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...
Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...
Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...iMasters
 
ORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalves
ORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalvesORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalves
ORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalvesiMasters
 
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...iMasters
 
Arquitetando seus dados na prática para a LGPD - Alessandra Martins
Arquitetando seus dados na prática para a LGPD - Alessandra MartinsArquitetando seus dados na prática para a LGPD - Alessandra Martins
Arquitetando seus dados na prática para a LGPD - Alessandra MartinsiMasters
 
O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...
O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...
O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...iMasters
 
Desenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana Chahoud
Desenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana ChahoudDesenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana Chahoud
Desenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana ChahoudiMasters
 
Use MDD e faça as máquinas trabalharem para você - Andreza Leite
 Use MDD e faça as máquinas trabalharem para você - Andreza Leite Use MDD e faça as máquinas trabalharem para você - Andreza Leite
Use MDD e faça as máquinas trabalharem para você - Andreza LeiteiMasters
 
Entendendo os porquês do seu servidor - Talita Bernardes
Entendendo os porquês do seu servidor - Talita BernardesEntendendo os porquês do seu servidor - Talita Bernardes
Entendendo os porquês do seu servidor - Talita BernardesiMasters
 
Backend performático além do "coloca mais máquina lá" - Diana Arnos
Backend performático além do "coloca mais máquina lá" - Diana ArnosBackend performático além do "coloca mais máquina lá" - Diana Arnos
Backend performático além do "coloca mais máquina lá" - Diana ArnosiMasters
 
Dicas para uma maior performance em APIs REST - Renato Groffe
Dicas para uma maior performance em APIs REST - Renato GroffeDicas para uma maior performance em APIs REST - Renato Groffe
Dicas para uma maior performance em APIs REST - Renato GroffeiMasters
 
7 dicas de desempenho que equivalem por 21 - Danielle Monteiro
7 dicas de desempenho que equivalem por 21 - Danielle Monteiro7 dicas de desempenho que equivalem por 21 - Danielle Monteiro
7 dicas de desempenho que equivalem por 21 - Danielle MonteiroiMasters
 
Quem se importa com acessibilidade Web? - Mauricio Maujor
Quem se importa com acessibilidade Web? - Mauricio MaujorQuem se importa com acessibilidade Web? - Mauricio Maujor
Quem se importa com acessibilidade Web? - Mauricio MaujoriMasters
 
Service Mesh com Istio e Kubernetes - Wellington Figueira da Silva
Service Mesh com Istio e Kubernetes - Wellington Figueira da SilvaService Mesh com Istio e Kubernetes - Wellington Figueira da Silva
Service Mesh com Istio e Kubernetes - Wellington Figueira da SilvaiMasters
 
Erros: Como eles vivem, se alimentam e se reproduzem? - Augusto Pascutti
Erros: Como eles vivem, se alimentam e se reproduzem? - Augusto PascuttiErros: Como eles vivem, se alimentam e se reproduzem? - Augusto Pascutti
Erros: Como eles vivem, se alimentam e se reproduzem? - Augusto PascuttiiMasters
 
Elasticidade e engenharia de banco de dados para alta performance - Rubens G...
Elasticidade e engenharia de banco de dados para alta performance  - Rubens G...Elasticidade e engenharia de banco de dados para alta performance  - Rubens G...
Elasticidade e engenharia de banco de dados para alta performance - Rubens G...iMasters
 
Construindo aplicações mais confiantes - Carolina Karklis
Construindo aplicações mais confiantes - Carolina KarklisConstruindo aplicações mais confiantes - Carolina Karklis
Construindo aplicações mais confiantes - Carolina KarklisiMasters
 
Monitoramento de Aplicações - Felipe Regalgo
Monitoramento de Aplicações - Felipe RegalgoMonitoramento de Aplicações - Felipe Regalgo
Monitoramento de Aplicações - Felipe RegalgoiMasters
 

Mais de iMasters (20)

O que você precisa saber para modelar bancos de dados NoSQL - Dani Monteiro
O que você precisa saber para modelar bancos de dados NoSQL - Dani MonteiroO que você precisa saber para modelar bancos de dados NoSQL - Dani Monteiro
O que você precisa saber para modelar bancos de dados NoSQL - Dani Monteiro
 
Postgres: wanted, beloved or dreaded? - Fabio Telles
Postgres: wanted, beloved or dreaded? - Fabio TellesPostgres: wanted, beloved or dreaded? - Fabio Telles
Postgres: wanted, beloved or dreaded? - Fabio Telles
 
Por que minha query esta lenta? - Suellen Moraes
Por que minha query esta lenta? - Suellen MoraesPor que minha query esta lenta? - Suellen Moraes
Por que minha query esta lenta? - Suellen Moraes
 
Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...
Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...
Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...
 
ORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalves
ORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalvesORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalves
ORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalves
 
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...
SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos -...
 
Arquitetando seus dados na prática para a LGPD - Alessandra Martins
Arquitetando seus dados na prática para a LGPD - Alessandra MartinsArquitetando seus dados na prática para a LGPD - Alessandra Martins
Arquitetando seus dados na prática para a LGPD - Alessandra Martins
 
O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...
O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...
O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...
 
Desenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana Chahoud
Desenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana ChahoudDesenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana Chahoud
Desenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana Chahoud
 
Use MDD e faça as máquinas trabalharem para você - Andreza Leite
 Use MDD e faça as máquinas trabalharem para você - Andreza Leite Use MDD e faça as máquinas trabalharem para você - Andreza Leite
Use MDD e faça as máquinas trabalharem para você - Andreza Leite
 
Entendendo os porquês do seu servidor - Talita Bernardes
Entendendo os porquês do seu servidor - Talita BernardesEntendendo os porquês do seu servidor - Talita Bernardes
Entendendo os porquês do seu servidor - Talita Bernardes
 
Backend performático além do "coloca mais máquina lá" - Diana Arnos
Backend performático além do "coloca mais máquina lá" - Diana ArnosBackend performático além do "coloca mais máquina lá" - Diana Arnos
Backend performático além do "coloca mais máquina lá" - Diana Arnos
 
Dicas para uma maior performance em APIs REST - Renato Groffe
Dicas para uma maior performance em APIs REST - Renato GroffeDicas para uma maior performance em APIs REST - Renato Groffe
Dicas para uma maior performance em APIs REST - Renato Groffe
 
7 dicas de desempenho que equivalem por 21 - Danielle Monteiro
7 dicas de desempenho que equivalem por 21 - Danielle Monteiro7 dicas de desempenho que equivalem por 21 - Danielle Monteiro
7 dicas de desempenho que equivalem por 21 - Danielle Monteiro
 
Quem se importa com acessibilidade Web? - Mauricio Maujor
Quem se importa com acessibilidade Web? - Mauricio MaujorQuem se importa com acessibilidade Web? - Mauricio Maujor
Quem se importa com acessibilidade Web? - Mauricio Maujor
 
Service Mesh com Istio e Kubernetes - Wellington Figueira da Silva
Service Mesh com Istio e Kubernetes - Wellington Figueira da SilvaService Mesh com Istio e Kubernetes - Wellington Figueira da Silva
Service Mesh com Istio e Kubernetes - Wellington Figueira da Silva
 
Erros: Como eles vivem, se alimentam e se reproduzem? - Augusto Pascutti
Erros: Como eles vivem, se alimentam e se reproduzem? - Augusto PascuttiErros: Como eles vivem, se alimentam e se reproduzem? - Augusto Pascutti
Erros: Como eles vivem, se alimentam e se reproduzem? - Augusto Pascutti
 
Elasticidade e engenharia de banco de dados para alta performance - Rubens G...
Elasticidade e engenharia de banco de dados para alta performance  - Rubens G...Elasticidade e engenharia de banco de dados para alta performance  - Rubens G...
Elasticidade e engenharia de banco de dados para alta performance - Rubens G...
 
Construindo aplicações mais confiantes - Carolina Karklis
Construindo aplicações mais confiantes - Carolina KarklisConstruindo aplicações mais confiantes - Carolina Karklis
Construindo aplicações mais confiantes - Carolina Karklis
 
Monitoramento de Aplicações - Felipe Regalgo
Monitoramento de Aplicações - Felipe RegalgoMonitoramento de Aplicações - Felipe Regalgo
Monitoramento de Aplicações - Felipe Regalgo
 

Android DevConference - Elastic Search como ferramenta de busca em aplicações Android

  • 1.
  • 2.
  • 3. Person someone = new Person(); someone.setName("Thiago Barradas"); Job job = new Job(); job.setCompany("MundiPagg"); job.setTitle("Software Developer"); job.setCurrentSkills([".NET","ElasticSearch","APIs"]); Study study1 = new Study(); study1.setLevel("Graduação"); study1.setCourse("Ciência da Computação"); study1.setCollege("UEZO"); Study study2 = new Study(); study2.setLevel("Pós Graduação"); study2.setCourse("MIT Mobile Development"); study2.setCollege("INFNET"); Contact contact = new Contact(); contact.setEmail("tbarradas@mundipagg.com"); contact.setPhoneNumber("21 99329-9143"); contact.setLinkedin("thiagobarradas"); someone.setJob(job); someone.addStudy(study1); someone.addStudy(study2); someone.setContact(contact);
  • 4. Person someone = new Person(); someone.setName("Brunelli Cupello"); Job job = new Job(); job.setCompany("MundiPagg"); job.setTitle("Software Developer"); job.setCurrentSkills([".NET","ElasticSearch","APIs"]); Study study = new Study(); study1.setLevel("Graduando"); study1.setCourse("Engenharia da Computação"); study1.setCollege("IME"); Contact contact = new Contact(); contact.setEmail("bcupello@mundipagg.com"); contact.setPhoneNumber("21 99582-7980"); contact.setLinkedin("brunellicupello"); someone.setJob(job); someone.addStudy(study); someone.setContact(contact);
  • 5.
  • 6. Tópicos da Apresentação ● Sobre o ElasticSearch ● Conceitos ● Instalação ● Mapping & Analyzers ● Unidades ● Filters & Querys ● Pagination & Scroll ● Autocomplete ● Highlight ● Aggregations ● Geolocation ● SDK Java ● Backup ● Plugins
  • 8. Sobre o ElasticSearch ● É um servidor de buscas distribuído; ● Alta disponibilidade; ● Facilmente escalável; ● Desenvolvido em Java; ● Baseado no Apache Lucene; ● Open Source; ● Comunicação API Rest (Json/HTTP); ● Armazenamento de Documentos; ● SDK para diversas linguagens;
  • 9. Sobre o ElasticSearch ● Recuperação rápida de documentos; ● Análise de Logs; ● Buscas full-text / geolocation; ● Aggregations & Analytics; ● Alerta e Classificação; ● Score Functions; ● Sugestões e Destaques; ● Documentação bem completa; ● Curva de aprendizado fácil;
  • 12. Documentos ● É armazenado sob um Id único; ● Documentos são objetos Json; ● Tipos de Dados: ● String; ● Number; ● Geopoint; ● Geoshape; ● Bool; ● Date; ● Ipv4; ● Array; ● Object;
  • 13. Indíce e Tipos Banco Relacional ElasticSearch Banco Índice Tabela Tipo Índice Token, Indíce ● Um índice é um container de dados. Cada nó pode hospedar diversos índices; ● Um tipo representa uma classe de documentos semelhantes, mesma estrutura; ● Um tipo possui seus campos definidos e seus campos possuem tokens (índices) que fazem referência ao documento; Analogia com banco relacional para facilitar o entendimento:
  • 14. Cluster, Nós e Shards ● Cluster é um conjunto de nós trabalhando juntos; ● Todos os nós se comunicam entre si; ● Shard é um “pedaço” único de um índice, que pode estar em quaquer nó; ● Um shard também pode (e deve) possuir réplicas espalhadas em outros nós;
  • 16. Linux (Ubuntu) > sudo add-apt-repository ppa:webupd8team/java > sudo apt-get update > sudo apt-get install oracle-java7-installer Instalando o Java > wget https://download.elastic.co/elasticsearch/elasticsearch/elasticsearch-1.7.1.deb > sudo dpkg -i elasticsearch-1.7.1.deb Instalando o ElasticSearch > sudo service elasticsearch start Iniciando o serviço
  • 17. Windows Instalando o Java Download: https://java.com/pt_BR/download/ Após a instalação, definir variável de ambiente do windows JAVA_HOME com o caminho da instalação do JRE. Instalando o ElasticSearch ● Download ZIP https://www.elastic.co/downloads/elasticsearch ● Descomprimir arquivo, acessar o diretório dos arquivos via CMD > .service.bat install > .service.bat start
  • 18. Verificando a Instalação Acesse: http://localhost:9200
  • 20. Mapping ● É o processo de definição de como um documento e seus campos são armazenados e indexados; ● Define os tipos de dados dos campos (string, date, integer, etc); ● É possível definir o tipo de indexação do campo (se é analisável ou não); ● Permite a criação de sub campos; ● Permite a definição de templates para campos adicionados dinamicamente;
  • 21. Analyzer ● São responsáveis por tratar os dados e gerar os índices associados a eles; ● O dado é quebrado em diversos tokens a partir dos Tokenizers e Token Filters; ● Os tokens são normalizados; ● Esse processo é aplicado tanto na indexação dos documentos quanto na busca; ● Existem diversos tipos de analisadores, para idiomas específicos, etc, e com possibilidade de customização;
  • 22. Índice Invertido ● Projetado para permitir uma busca full-text extremamente rápida; ● Consiste em uma lista única com todas as palavras que aparecem nos documentos e para cada palavra uma lista de documentos que ela aparece; Exemplo: ● The quick brown fox jumped over the lazy dog ● Quick brown foxes leap over lazy dogs in summer
  • 23. Índice Invertido Exemplo: ● The quick brown fox jumped over the lazy dog ● Quick brown foxes leap over lazy dogs in summer Uma busca por “quick brown”
  • 26. Unidades y Ano M Mês w Semana d Dia h Hora m Minuto s Segundo ms Milissegundo b Byte kb Kilobyte mb Megabyte gb Gigabyte tb Terabyte mi Milhas yd Jardas ft Pés in Polegadas km Quilômetros m Metros cm Centímetros mm Milímetros nmi Milhas naúticas Tempo Armazenamento Distância
  • 28. Filters & Querys Filter Query Deve ser usado para os tipos string (not analyzed), integer, long, date, etc Deve ser utilizado para o tipo string (analyzed) Usa o próprio valor recebido como token Divide valor recebido em vários tokens e normaliza-os de acordo com o analisador definido Não gera relevância/pontuação (score) Gera relevância/pontuação (score) ● Filters e Querys são utilizados para executar as consultas no ElasticSearch.
  • 29. Filters & Querys Pagination & Scroll Autocomplete Highlight Aggregations Geolocation EXEMPLOS NA PRÁTICA!
  • 31. SDK Java - Jest Para facilitar o desenvolvimento de aplicações utilizando ElasticSearch, existem diversas SDKs para as principais linguagens. Uma das principais para integração com Java é o Jest. ● Disponível no Maven; ● Versões compatíveis para o ElasticSearch nas versões 0.X, 1.X e 2.X; ● Contribuição constante no projeto;
  • 32. SDK Java - Jest Instanciando o Client Criando um Índice Indexando um documento
  • 33. SDK Java - Jest Buscando documentos Obtendo documento específico pelo ID Buscando documentos Deletando documento Inserindo documentos em massa (bulk)
  • 35. Backup PUT /_snapshot/meu_repo { "type":"fs", "settings": { "location":"C:es-bkp" } } CRIAR REPOSITÓRIO PUT /_snapshot/meu_repo/meu_snap CRIAR SNAPSHOT GET /_snapshot/meu_repo/_all LISTAR SNAPSHOTS POST /_snapshot/meu_repo/meu_snap/_restore RESTAURAR SNAPSHOT
  • 37. Logstash “Collect, Enrich & Data Transport” ● Processa quaisquer dado, de diversas fontes; ● Centralizar o processamento de dados de todos os tipos; ● Normalizar variando esquema e formatos; ● Customização rápida para formatos de log; ● Permite facilmente adicionar plugins para fontes de dados personalizados;
  • 38. Kibana “Explore & Visualize Your Data” ● Dashboard para visualização de dados; ● Flexibilidade de análise e plataforma para visualização; ● Resumo em real-time e gráficos de streaming de dados; ● Interface intuitiva para uma variedade de usuários; ● Compartilhamento instantâneo e incorporação de dashboards;
  • 40. Watcher “Alerting for Elasticsearch” ● Alerta e notificação; ● Analisar histórico de eventos e dados; ● Definição de condições, cronograma, ações; ● Integração com diversas ferramentas como JIRA, HipChat e Slack;
  • 41. Shield “Security for ElasticSearch” ● Provedor de segurança avançada ao seu cluster; ● Acesso autenticado para diversos usuários; ● Recursos avançados de criptografia; ● Acesso com base em funções/permissões, IP; ● Pode ser integrado ao AD /LDAP; ● Logs de auditoria com acessos e sessões (HIPAA, PCI DSS, FISMA, ISO);
  • 43. Thiago Barradas Email: tbarradas@mundipagg.com Telefone: (21) 99329-9143 LinkedIn: thiagobarradas Brunelli Cupello Email: bcupello@mundipagg.com Telefone: (21) 99582-7980 LinkedIn: brunellicupello