Este tutorial foi criado para o ElasticSearch versão 5.2. A versão 5 apresenta várias alterações importantes em termos de DSL de consulta e mapeamento.
Se você ainda estiver executando a versão 2.x, dê uma olhada na ramificação v2 deste repositório .
Alinhei vários exemplos para mostrar os recursos e o poder do ElasticSearch. Muitas informações são baseadas em "ElasticSearch, The Definitive Guide".
Baixe ElasticSearch e Kibana aqui e siga estas etapas simples:
./bin/elasticsearch
./bin/kibana
O Exercício 1 é muito simples e o objetivo é pegar o jeito da interface RESTFul do ElasticSearch.
Tópicos:
Exercício de carga 1
No exercício 2 estaremos indexando muitos dados. Para melhorar o desempenho, estamos fazendo isso em massa.
Esses dados contêm informações do blog Combell. Indexei as seguintes informações:
Esses dados serão utilizados nos demais exercícios.
Carregue os dados do blog em massa
No exercício 3, estamos realizando algumas consultas básicas usando a DSL de consulta ElasticSearch. A DSL é baseada em JSON e as consultas são pesquisas de texto completo.
Aqui estão algumas pesquisas que estamos realizando:
Exercício de carga 3
No exercício 4, vamos nos concentrar na análise do texto completo e da linguagem humana. Ignoraremos os recursos de banco de dados do ElasticSearch e lançaremos algum texto nele e veremos como ele tokeniza os dados.
Dependendo do analisador que você usa, o ElasticSearch irá tokenizar e armazenar os dados de uma maneira diferente. Não se preocupe, os dados originais permanecerão na origem do documento, é o índice invertido que muda.
Exercício de carga 4
O exercício 5 trata do esquema de um índice. ElasticSearch é comercializado como sem esquema. Na realidade, o ElasticSearch adivinhará o esquema para você.
Mostrarei exemplos em que ele adivinha com sucesso e exemplos em que não.
Exercício de carga 5
Para evitar que o ElasticSearch adivinhe o esquema errado, o mapeamento explícito é uma boa ideia. O Exercício 6 configurará o mapeamento correto para nosso exemplo de blog e reinserirá os dados.
Inteiros e strings serão definidos de acordo e a data terá o formato correto.
O mapeamento explícito será usado no exercício 7.
Exercício de carga 6
As 2 pesquisas do exercício 5 que falharam serão agora executadas novamente. Graças ao mapeamento explícito, a saída estará correta.
Exercício de carga 7
No exercício 8, definiremos ainda outro mapeamento no índice do nosso blog. Este mapeamento trata apenas o campo "título" como texto completo. O restante das strings não será analisado e tokenizado. Eles serão armazenados "como estão" .
Esses dados serão usados no exercício 9.
Exercício de carga 8
No exercício 9, mostrarei a diferença entre pesquisas de texto completo usando consultas e correspondências de valores exatos usando consultas no modo de filtro.
O mapeamento feito no exercício 8 garantiu que agora exista um campo "palavra-chave" na propriedade title. Isso significa que as consultas em "título" são tratadas como pesquisas de texto completo e os filtros booleanos no campo "título.keyword" regular são tratados como correspondências de valores exatos.
Em um dos exemplos, também mostrarei como combinar múltiplas consultas e filtros.
Isto é o que faremos neste exercício:
Exercício de carga 9
Iremos novamente remapear os dados. Desta vez trataremos a propriedade “title” como um campo analisado. Por padrão, o analisador "padrão" é usado. Como nossos dados estão em holandês e inglês, adicionei 2 campos:
Esta é a versão final do mapeamento. Os outros exemplos usarão esse mapeamento e dados.
Exercício de carga 10
O Exercício 11 trata da análise de texto, com base no idioma. O Exercício 4 foi uma dica para a análise dos dados. Agora realizaremos pesquisas que dependem da análise da linguagem.
Exercício de carga 11
No exercício 12, criaremos um novo índice de “cidades” , que contém todas as cidades localizadas na província de West-Vlaanderen , na Bélgica. O índice armazena o nome da cidade e suas coordenadas geográficas.
O mapeamento explícito e os dados serão utilizados em outros exercícios.
Exercício de carga 12
No exercício anterior, criamos um novo índice e indexamos alguns dados geográficos. No exercício 13, realizaremos pesquisas nesses dados.
2 consultas serão apresentadas:
Exercício de carga 13
No exercício 14, carregaremos os dados em outro índice. Esse índice é chamado de “carros” e contém informações sobre vendas de automóveis. Cada transação mantém registro das seguintes informações:
Esta informação será usada no exercício 15.
Exercício de carga 14
As agregações são um recurso muito poderoso do ElasticSearch. É basicamente como "agrupar por" em SQL, mas muito mais poderoso. As agregações são a razão pela qual o ElasticSearch é popular na comunidade de big data e ciência de dados.
Estas são as agregações que executaremos neste exercício:
Exercício de carga 15