palestra feita em PHPSC Conf 2014 - 31/8/2014. http://conf.phpsc.com.br/
Nós conectar a um cluster sphinxsearch para pesquisa, mas recentemente também implementado um componente de pesquisa com ElasticSearch. Vamos discutir como nós fizemos isso, e como nós queremos usar o índice de 30M para pesquisar o melhor trabalho. Vamos destacar as lições aprendidas na integração ElasticSearch em nossos ambientes virtualizados usando PHP e phalconPHP, e os desafios de escala para América Latina.
http://www.tuproximotrabajo.com.ar
2. 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.
3. 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.
7. 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?
9. • Launched 2006
• ~3 milhões de avisos
• ~1000 fuentes de avisos
• “SasaIndex”
• RIP 2010
GoSasa
10. • 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
13. 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.
14. • 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
15. • 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
16. “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
17. 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
21. Elasticsearch é um motor de pesquisa e
análise flexível e poderoso, distribuido, em
tempo real e código aberto.
22. 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”
23. 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
24. Elasticsearch é um motor de pesquisa e
análise flexível e poderoso, distribuido, em
tempo real e código aberto.
• Flush cada 1 segundo
30. 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
37. 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
38. como instalar?
1. Faça o download e extrair:
http://www.elasticsearch.org/download/
2. $ bin/elasticsearch
Debian/Ubuntu
1. apt-get install elasticsearch
RPM
1. yum install elasticsearch
46. Rivers
Um 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
47. Percolator
A 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.
49. Logstash
Logstash 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.