Slides da apresentação feita para o Elastic Recife User Group: https://www.youtube.com/watch?v=wfYKFkgRnZg&feature=youtu.be O tema era o uso de Elasticsearch para busca textual na plataforma de portais web Liferay (baseada em Java.)
17. Elasticsearch é banco de dados
NoSQL extremamente escalável e
distribuído baseado em Lucene e
especialmente útil para busca textual,
data analysis e big data.
18. Por que mudar para Elasticsearch?
●
Lucene é uma biblioteca de baixo nível
●
Clusterização e balanceamento já incluso
●
Nos livramos de toneladas de código
●
Muito mais flexível
●
Padrão do mercado
19. Índice
Tipo
key1: value1
key2: value2
Documento
Índice
Tipo
key1: value1
key2: value2
Documento
Documento
Tipo
key1: value1
key2: value2
Documento
key1: value1
key2: value2
Índice
Tipo
key1: value1
key2: value2
Documento
Documento
key1: value1
key2: value2
Modelo de dados do Elasticsearch
20. Banco de dados Índice
Tabela Tipo
Linha Documento
Coluna Campo
23. O que fizemos
●
Uma instância do portal possui um único índice
●
Esses índices contém o tipo
LiferayDocumentType
●
Todas as entidades devem ser adicionadas ao
mesmo documento
27. Como adicionar documentos?
●
Indexer API
– Cada entidade tem um indexador
– Um indexador é um bean que implementa
Indexer
– O indexador retorna um objeto Document
– A infraestrutura salva esse documento
28.
29.
30. Como recuperar documentos
●
Searcher API
– Toda busca contém uma query ENORME
– Cada entidade possui um buscador
– Um buscador é um bean que implementa Searcher
– O buscador adiciona campos a serem buscados na
query
31.
32.
33.
34. Segunda Lição
Crie uma “camada de persistência” entre
Elasticsearch e as diversas aplicações
http://tinyurl.com/y3gh5o97
36. Primeira tentativa
●
Idiomas diferntes têm comportamentos diferentes
●
Resultados apenas no “idioma do usuário”
●
Problemas
– Qual o idioma do usuário?
●
“Display locale”
– Qual o idioma do conteúdo?
●
“Site default locale”
45. Novo Desafio: Facets
●
Uma demanda comum são facets
– Filtros para uma busca já executada
●
Problema: filtrar por tags e categorias
– Tags e categorias são palavras buscáveis
– Mas também são bases de filtragem
● Para pesquisar, usamos campos do tipo text
● Para filtrar, usamos campos do tipo keyword
46.
47.
48.
49. Use o mesmo valor em múltiplos campos com
múltiplos tipos
Quarta Lição