elasticsearch: motor de busca e além. lições aprendidas criando tu próximo trabajo - phpsc...

53
elasticsearch. Motor de busca e além Lições aprendidas criando Tu Proximo Trabajo.

Upload: miguel-gallardo

Post on 22-Jul-2015

441 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo Trabajo - PHPSC Conf 2014

elasticsearch.Motor de busca e além

Lições aprendidas criando Tu Proximo Trabajo.

Page 2: Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo Trabajo - PHPSC Conf 2014

Miguel Gallardo

Mais de 10 anos de experiência como desenvolvedor, com um salário.Fanático por computador desde os 7 anos de idade.Desenvolvedor desde os 13 anos de idade.

Eu sempre estou buscando melhorar minhas habilidades, me tornei um programador poliglota que trabalha em várias linguagens de programação e múltiplos paradigmas de desenvolvimento.

Page 3: Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo Trabajo - PHPSC Conf 2014

Miguel GallardoMais de 10 anos de experiência como desenvolvedor, com um salário.Fanático por computador desde os 7 anos de idade.Desenvolvedor desde os 13 anos de idade.

Eu sempre estou buscando melhorar minhas habilidades, me tornei um programador poliglota que trabalha em várias linguagens de programação e múltiplos paradigmas de desenvolvimento.

Page 4: Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo Trabajo - PHPSC Conf 2014

6 anos

Search the web using Google!

10 results Google Search I'm feeling lucky

We've moved. New site at google.comAbout the Google Stanford Project

Get Google! updates monthly!

your e-mail Subscribe Archive

Copyright ©1997-8 Stanford University

Page 5: Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo Trabajo - PHPSC Conf 2014

• 52.069 empregados (Q2 2014) • renda: ~US$ 60 bilhões • Valor de mercado: ~US$ 392 bilhões • +4 milhões de servidores • 120 bilhões buscas por mês • Adsense, Gmail, google maps, street view, youtube,

android, chrome, etc

¿Google?

Page 6: Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo Trabajo - PHPSC Conf 2014

¿como podemos fazer o próximo Google?Google?

Page 7: Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo Trabajo - PHPSC Conf 2014

LIKE / MYSQL FULL TEXT • SELECT * FROM `table` WHERE `field` LIKE “%text%";• SELECT * FROM `table` MATCH (`field`,`desc`) AGAINST ("Text")

• Muito facil de implementar • Desempenho é ruim (fácil de DoS) • Sharding manual • corrupção MyISAM • Sintaxe de consulta limitada • No é un motor de busca!

¿SQL?

Page 8: Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo Trabajo - PHPSC Conf 2014

¿motor de busca SQL?

Page 9: Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo Trabajo - PHPSC Conf 2014

• Launched 2006 • ~3 milhões de avisos • ~1000 fuentes de avisos • “SasaIndex” • RIP 2010

GoSasa

Page 10: Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo Trabajo - PHPSC Conf 2014

• Lançado 2007 • 9 milhões ofertas de empregos histórico • 200K ofertas de emprego atuais • 80K visitas mensal • 1º motor de busca de emprego na

Argentina *

Tu Próximo Trabajo

Page 11: Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo Trabajo - PHPSC Conf 2014
Page 12: Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo Trabajo - PHPSC Conf 2014

MySQL

Sphinx Apache

Crawlers

2008

Page 13: Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo Trabajo - PHPSC Conf 2014

Sphinx é um servidor de pesquisa de texto completo de código aberto, projetado a partir do zero com o desempenho, relevância (aka a

qualidade da pesquisa), e simplicidade de integração em mente.

Page 14: Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo Trabajo - PHPSC Conf 2014

• Alta velocidade de indexação (10~15 MB/s em uma • CPU) • Alta velocidade de pesquisa (500+ queries/sec) • Alta escalabilidade: Craigslist.org

• 300 milhões de consultas/dia • 15 clusters • BoardReader.com: +16 bilhões de documentos

indexados em 37 máquinas. • Fala protocolo MySQL

Page 15: Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo Trabajo - PHPSC Conf 2014

• Não é em tempo real! Reindexação de dados completo (2008)

• Configuração da velha escola (.conf files) • Configuração de cluster complexo • Velha escola • difícil de instalar, configurar e escalabilidade • Protocolo proprietário • Não de esquema livre

Page 16: Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo Trabajo - PHPSC Conf 2014

“Solr é uma plataforma de pesquisa de código aberto do projeto Apache Lucene. Suas

principais características incluem pesquisa de texto completo, bateu destacando, pesquisa facetada, clustering dinâmica, integração de banco de dados e de documentos ricos (por exemplo, Word, PDF). Pesquisa distribuída e

replicação do índice, Solr é altamente escalável.”

Solr/Lucene

Page 17: Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo Trabajo - PHPSC Conf 2014

Um Sistema de Gestão de Documentos intuitiva, criada por advogados para advogados

• servidor backend: php • Clientes: ruby, java, net • MySQL para dados. MongoDB para arquivos e

documentos

Page 18: Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo Trabajo - PHPSC Conf 2014
Page 19: Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo Trabajo - PHPSC Conf 2014

Solr/Lucene

Page 20: Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo Trabajo - PHPSC Conf 2014

elasticsearch.new kid on the block

Page 21: Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo Trabajo - PHPSC Conf 2014

Elasticsearch é um motor de pesquisa e análise flexível e poderoso, distribuido, em

tempo real e código aberto.

Page 22: Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo Trabajo - PHPSC Conf 2014

Elasticsearch é um motor de pesquisa e análise flexível e poderoso, distribuido, em

tempo real e código aberto.

• JSON • RESTful API • “Schema free”

Page 23: Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo Trabajo - PHPSC Conf 2014

Elasticsearch é um motor de pesquisa e análise flexível e poderoso, distribuido, em

tempo real e código aberto.

• Master nodes & data nodes; • Réplicas e fragmentos automáticas • Transporte assíncrona entre nodos

Page 24: Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo Trabajo - PHPSC Conf 2014

Elasticsearch é um motor de pesquisa e análise flexível e poderoso, distribuido, em

tempo real e código aberto.

• Flush cada 1 segundo

Page 25: Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo Trabajo - PHPSC Conf 2014

elasticsearch.

Evolução• Indexadores personalizados

• Índices invertidos

• Analisadores personalizados• Faceting• Configuração de analisadores• Faceting, Geoespacial

• Mapeamento de documentos• Consultas de sub-documentos• Replicação• JSON• Faceting, consultas complexas

Page 26: Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo Trabajo - PHPSC Conf 2014
Page 27: Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo Trabajo - PHPSC Conf 2014
Page 28: Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo Trabajo - PHPSC Conf 2014
Page 29: Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo Trabajo - PHPSC Conf 2014

2014HAProxy

Crawler

MySQL

Saver

Parser

Nginx

Beanstalkd

Page 30: Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo Trabajo - PHPSC Conf 2014

Pesquisando 50 milhões de locais em tempo real? Foursquare faz isso usando ElasticSearch

Pesquisa 20TB de dados usando ElasticSearch, incluindo 1,3 bilhões de arquivos e 130 bilhões de linhas de código

Usa ElasticSearch para fornecer resultados imediatos e relevantes para a sua plataforma de distribuição de áudio em linha atingindo 180 milhões de pessoas

Usa ElasticSearch para fornecer resultados de mais de 20 milhões de produtos, um segundo depois de um artigo foi publicado já está disponível nos resultados

Usa ElasticSearch para fornecer resultados de 25 milhões de usuários por dia. 70 milhões de documentos indexados. 215 GB de Dados

Page 31: Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo Trabajo - PHPSC Conf 2014

Pesquisa não estruturada

Page 32: Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo Trabajo - PHPSC Conf 2014

Pesquisa estruturada (FACETS!)

Page 33: Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo Trabajo - PHPSC Conf 2014

Enriquecimento

Page 34: Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo Trabajo - PHPSC Conf 2014

Ordenar por

Page 35: Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo Trabajo - PHPSC Conf 2014

Paginação

Page 36: Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo Trabajo - PHPSC Conf 2014

Agregação

Page 37: Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo Trabajo - PHPSC Conf 2014

Conceitos • Cluster Um grupo de nodos compartilhando o mesmo conjunto de índices

• Node Uma instância ElasticSearch em execução (processo JVM)

• Index ≈ MySQL database Um conjunto de documentos de possivelmente diferentes tipos Armazenado em um ou mais fragmentos

• Type ≈ MySQL Table um conjunto de documentos em um índice que compartilham o mesmo esquema

• Shard Um índice Lucene, alocado em um nodo

Page 38: Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo Trabajo - PHPSC Conf 2014

como instalar?1. Faça o download e extrair:

http://www.elasticsearch.org/download/2. $ bin/elasticsearch

Debian/Ubuntu1. apt-get install elasticsearch

RPM1. yum install elasticsearch

Page 39: Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo Trabajo - PHPSC Conf 2014

API: Apenas REST!

http://HOST:PORT/índice(s)/tipo(s)/_action|idmétodos HTTP: GET, PUT, POST, DELETE

Clientes:• Curl• PHP - elastica/celastica• Ruby• Python• Perl• JS• ETC

Page 40: Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo Trabajo - PHPSC Conf 2014

Indexar um documento CURL -XPUT ‘http://localhost:9200/movies/movie/1' -d ‘{

"title" : "Django Unchained", "genre" : "western", "release_date" : "2012-12-25"}’

Page 41: Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo Trabajo - PHPSC Conf 2014

Atualizar um documento CURL -XPUT ‘http://localhost:9200/movies/movie/1' -d ‘{

"director" : { "lastname" : "Tarantino", "firstname" : "Quentin" }, "actors" : [ { "lastname" : "Foxx", "firstname" : "Jamie" }, { "lastname" : "Waltz", "firstname" : "Christoph" }, { "lastname" : "Tarantino", "firstname" : "Quentin" }, ]}’

Page 42: Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo Trabajo - PHPSC Conf 2014

Buscar um documento CURL -XGET ‘http://localhost:9200/movies/movie/_search?q=Tarantino' -d ‘{

"_index" : "movies", "_type" : "movie", "_id" : "1", "_version" : "2", "title" : "Django Unchained", "genre" : "western", "release_date" : "2012-12-25", "director" : { "lastname" : “Tarantino", "firstname" : "Quentin" }, "actors" : [ { "lastname" : “Foxx", "firstname" : "Jamie" }, { "lastname" : “Waltz", "firstname" : "Christoph" }, { "lastname" : “Tarantino", "firstname" : "Quentin" }, ]}’

Page 43: Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo Trabajo - PHPSC Conf 2014

Mapeamento - Schema CURL -XPUT ‘http://localhost:9200/movies/movie/_mapping' -d ‘{"movies" : { "properties" : { "title" : {"type" : "string"}, "genre" : {"type" : "string"}, "release_date" : {"type" : "date", "format" : "yyyy-MM-dd"}, "director" : { "type" : "object", "properties" : { "lastname" : {"type" : "string"}, "firstname" : {"type" : "string"} } }, }}

}’

Page 44: Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo Trabajo - PHPSC Conf 2014

Query dslmatch, field, query_string, bool, term,

Fuzzy, match_all,more like this, geo, Range, wildcard, span,

...

Page 45: Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo Trabajo - PHPSC Conf 2014

Filtroslimit, and, or, not, exists,

geo_distance,geo_distance_range, geo_box, geo_shape, range

numeric_range, has_parent, has_child...

Page 46: Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo Trabajo - PHPSC Conf 2014

RiversUm River é um serviço pluggable funcionando

dentro elasticsearch conjunto puxando dados (ou sendo empurrado com os dados) que é, então,

indexada no cluster. • CouchDB • rabbitmq • twitter • wikipedia • MongoDB • JDBC

Page 47: Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo Trabajo - PHPSC Conf 2014

PercolatorA consulta pode ser salvo como um documento em

elasticsearch, qualquer nova coador documento correspondente será adicionado ao http://HOST:PORT/índice(s)/tipo(s)/_percolate.

Page 48: Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo Trabajo - PHPSC Conf 2014

Motor de busca e alem. Elasticsearch, logstash e kibana

Page 49: Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo Trabajo - PHPSC Conf 2014

LogstashLogstash ajuda a tirar logs e outros dados de

eventos de tempo com base de qualquer sistema e armazená-lo em um único lugar para transformação

e processamento adicional.

Page 50: Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo Trabajo - PHPSC Conf 2014

Kibana

Page 51: Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo Trabajo - PHPSC Conf 2014

ELK stack

Page 52: Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo Trabajo - PHPSC Conf 2014

Miguel Gallardo@[email protected]

Page 53: Elasticsearch: Motor de busca e além. Lições aprendidas criando Tu Próximo Trabajo - PHPSC Conf 2014

Miguel Gallardo@[email protected]

Obrigado!