Elasticsearch Database
Elasticsearch é um dos bancos de dados NoSQL mais populares, usado para armazenar e pesquisar dados baseados em texto. É baseado na tecnologia de indexação Lucene e permite a recuperação da pesquisa em milissegundos com base nos dados que são indexados.
Com base no site Elasticsearch, aqui está a definição:
Elasticsearch é um mecanismo de pesquisa e análise RESTful de código aberto, capaz de resolver um número crescente de casos de uso.
Essas foram algumas palavras de alto nível sobre Elasticsearch. Vamos entender os conceitos em detalhes aqui.
- Distribuído: Elasticsearch divide os dados que contém em vários nós e usa senhor de escravos algoritmo internamente
- Repousante: Elasticsearch oferece suporte a consultas de banco de dados por meio de APIs REST. Isso significa que podemos usar chamadas HTTP simples e métodos HTTP como GET, POST, PUT, DELETE etc. para acessar dados.
- Motor de pesquisa e análise: ES oferece suporte a consultas altamente analíticas para serem executadas no sistema, que podem consistir em consultas agregadas e vários tipos, como consultas estruturadas, não estruturadas e geo.
- Escalonável horizontalmente: Este tipo de ataque refere-se à adição de mais máquinas a um cluster existente. Isso significa que o ES é capaz de aceitar mais nós em seu cluster e não fornecer tempo de inatividade para atualizações necessárias ao sistema. Observe a imagem abaixo para entender os conceitos de dimensionamento:
Raspagem vertical e horizontal
Primeiros passos com o banco de dados Elasticsearch
Para começar a usar o Elasticsearch, ele deve ser instalado na máquina. Para fazer isso, leia Instalar ElasticSearch no Ubuntu.
Certifique-se de ter uma instalação ElasticSearch ativa se quiser tentar exemplos que apresentamos mais tarde na lição.
Elasticsearch: Conceitos e Componentes
Nesta seção, veremos quais componentes e conceitos estão no coração do Elasticsearch. Compreender esses conceitos é importante para entender como o ES funciona:
- Grupo: Um cluster é uma coleção de máquinas servidoras (nós) que contém os dados. Os dados são divididos entre vários nós para que possam ser replicados e o Ponto Único de Falha (SPoF) não aconteça com o ES Server. O nome padrão do cluster é elasticsearch. Cada nó em um cluster se conecta ao cluster com uma URL e o nome do cluster, por isso é importante manter este nome distinto e claro.
- Nó: Uma máquina Node faz parte de um servidor e é denominada como uma única máquina. Ele armazena os dados e fornece recursos de indexação e pesquisa, junto com outros nós para o cluster.
Devido ao conceito de escalonamento horizontal, podemos virtualmente adicionar um número infinito de nós em um cluster ES para dar a ele muito mais força e recursos de indexação.
- Índice: Um índice é uma coleção de documentos com características semelhantes. Um índice é muito semelhante a um banco de dados em um ambiente baseado em SQL.
- Modelo: Um tipo é usado para separar dados entre o mesmo índice. Por exemplo, o banco de dados / índice do cliente pode ter vários tipos, como usuário, tipo_de_pagamento etc.
Observe que os Tipos foram descontinuados do ES v6.0.0 em diante. Leia aqui porque isso foi feito.
- Documento: Um documento é o nível mais baixo de unidade que representa os dados. Imagine-o como um objeto JSON que contém seus dados. É possível indexar tantos documentos dentro de um Índice.
Tipos de pesquisa no Elasticsearch
Elasticsearch é conhecido por seus recursos de pesquisa quase em tempo real e as flexibilidades que fornece com o tipo de dados que estão sendo indexados e pesquisados. Vamos começar a estudar como usar a pesquisa com vários tipos de dados.
- Pesquisa estruturada: este tipo de pesquisa é executado em dados que têm um formato predefinido como datas, horas e números. Com o formato predefinido, vem a flexibilidade de executar operações comuns, como comparar valores em um intervalo de datas. Interessantemente, dados textuais também podem ser estruturados. Isso pode acontecer quando um campo tem um número fixo de valores. Por exemplo, o nome dos bancos de dados pode ser MySQL, MongoDB, Elasticsearch, Neo4J etc. Com a pesquisa estruturada, a resposta às consultas que fazemos é sim ou não.
- Pesquisa de texto completo: este tipo de pesquisa depende de dois fatores importantes, Relevância e Análise. Com a Relevância, determinamos quão bem alguns dados correspondem à consulta, definindo uma pontuação para os documentos resultantes. Esta pontuação é fornecida pelo próprio ES. Análise refere-se a quebrar o texto em tokens normalizados para criar um índice invertido.
- Pesquisa de múltiplos campos: com o número de consultas analíticas cada vez mais crescentes nos dados armazenados no ES, geralmente não enfrentamos apenas consultas de correspondência simples. Os requisitos aumentaram para executar consultas que abrangem vários campos e têm uma lista classificada classificada de dados retornada para nós pelo próprio banco de dados. Dessa forma, os dados podem ser apresentados ao usuário final de uma forma muito mais eficiente.
- Correspondência de proimidade: as consultas hoje são muito mais do que apenas identificar se alguns dados textuais contêm outra string ou não. Trata-se de estabelecer a relação entre os dados para que possam ser pontuados e combinados com o contexto no qual os dados estão sendo combinados. Por exemplo:
- Bola bateu em john
- John acertou a bola
- John comprou uma nova bola que foi atingida no jardim de Jaen
Uma consulta de correspondência encontrará todos os três documentos quando pesquisados Bola rebatida. Uma pesquisa de proximidade pode nos dizer a que distância essas duas palavras aparecem na mesma linha ou parágrafo devido ao qual corresponderam.
- Correspondência parcial: muitas vezes precisamos executar consultas de correspondência parcial. A correspondência parcial nos permite executar consultas que correspondem parcialmente. Para visualizar isso, vamos examinar consultas semelhantes baseadas em SQL:
Consultas SQL: correspondência parcial
ONDE nome como "% john%"
E nome como "% red%"
E nome como "% jardim%"Em algumas ocasiões, só precisamos executar consultas de correspondência parcial, mesmo quando podem ser consideradas técnicas de força bruta.
Integração com Kibana
Quando se trata de um mecanismo de análise, geralmente precisamos executar consultas de análise em um domínio de Business Intelligence (BI). Quando se trata de analistas de negócios ou analistas de dados, não seria justo supor que as pessoas conheçam uma linguagem de programação quando desejam visualizar os dados presentes no ES Cluster. Este problema é resolvido por Kibana. Kibana oferece tantos benefícios ao BI que as pessoas podem realmente visualizar os dados com um painel excelente e personalizável e ver os dados de forma inetrativa. Vejamos alguns de seus benefícios aqui.
Gráficos Interativos
No núcleo do Kibana estão gráficos interativos como estes:
Kibana vem com suporte com vários tipos de gráficos, como gráficos de pizza, sunbursts, histogramas e muito mais, que usa os recursos de agregação completos do ES.
Suporte de mapeamento
Kibana também suporta Geoagregação completa, o que nos permite mapear nossos dados geograficamente. Isso não é legal?!
Agregações e filtros pré-construídos
Com agregações e filtros pré-construídos, é possível literalmente fragmentar, descartar e executar consultas altamente otimizadas dentro do Kibana Dashboard. Com apenas alguns cliques, é possível executar consultas agregadas e apresentar os resultados na forma de gráficos interativos.
Distribuição fácil de painéis
Com o Kibana, também é muito fácil compartilhar painéis com um público muito mais amplo sem fazer nenhuma alteração no painel com a ajuda do modo Somente painel. Podemos facilmente inserir painéis em nosso wiki interno ou páginas da web.
Imagens de destaque tiradas da página de produto Kibana.
Usando Elasticsearch
Para ver os detalhes da instância e as informações do cluster, execute o seguinte comando:
Agora, podemos tentar inserir alguns dados no ES usando o seguinte comando:
Inserindo Dados
ondulação \-X POST 'http: // localhost: 9200 / linuxhint / hello / 1' \
-H 'Content-Type: application / json' \
-d '"nome": "LinuxHint"' \
Aqui está o que recebemos de volta com este comando:
Vamos tentar obter os dados agora:
Obtendo dados
curl -X GET 'http: // localhost: 9200 / linuxhint / hello / 1'Quando executamos este comando, obtemos a seguinte saída:
Conclusão
Nesta lição, vimos como podemos começar a usar ElasticSearch, que é um excelente mecanismo de análise e também oferece excelente suporte para pesquisa de texto livre quase em tempo real.