Execute consultas de texto com o cliente Elasticsearch Go.

Aprenda como realizar consultas de texto tradicionais no Elasticsearch usando o cliente Elasticsearch Go por meio de um exemplo prático.

Coloque a mão na massa com o Elasticsearch: mergulhe nos nossos notebooks de amostra no repositório Elasticsearch Labs, inicie uma avaliação gratuita na nuvem ou conheça o Elastic na sua máquina local agora.

Desenvolver software em qualquer linguagem de programação, incluindo Go, é comprometer-se com uma vida inteira de aprendizado. Ao longo de sua trajetória universitária e profissional, Carly precisou se adaptar a ser poliglota e experimentar diversas linguagens de programação, incluindo Python, C, JavaScript, TypeScript e Java. Mas isso não foi suficiente! Recentemente, ela também começou a jogar Go!

Assim como os animais, as linguagens de programação e um de seus autores favoritos, a busca passou por uma evolução de diferentes práticas, o que pode dificultar a escolha da melhor opção para o seu caso específico. Neste blog, compartilharemos uma visão geral da pesquisa tradicional por palavras-chave, juntamente com um exemplo usando o Elasticsearch e o cliente Elasticsearch Go.

Pré-requisitos

Para dar continuidade a este exemplo, certifique-se de que os seguintes pré-requisitos sejam atendidos:

  1. Instalação do Go versão 1.21 ou posterior
  2. Crie seu próprio repositório Go usando a estrutura recomendada e o gerenciamento de pacotes abordados na documentação do Go.
  3. Criação do seu próprio cluster Elasticsearch, preenchido com um conjunto de páginas baseadas em roedores, incluindo para o nosso amigável Gopher, da Wikipédia:

Conectando-se ao Elasticsearch

Em nossos exemplos, utilizaremos a API tipada oferecida pelo cliente Go. Para estabelecer uma conexão segura para qualquer consulta, é necessário configurar o cliente usando um dos seguintes métodos:

  1. ID da nuvem e chave de API, caso esteja utilizando o Elastic Cloud.
  2. URL do cluster, nome de usuário, senha e certificado.

A conexão com nosso cluster localizado no Elastic Cloud seria feita da seguinte forma:

A conexão client pode então ser usada para pesquisa, como mostrado mais adiante.

A busca por palavras-chave é o tipo de busca fundamental com o qual estamos familiarizados desde a criação do Archie, o primeiro mecanismo de busca documentado na internet, escrito em 1990.

Um componente central da busca por palavras-chave é a tradução de documentos em um índice invertido. Assim como o índice encontrado no final de um livro didático, um índice invertido contém um mapeamento entre uma lista de palavras-chave e sua localização em cada documento. O diagrama abaixo mostra as principais etapas de geração do índice:

Conforme mostrado acima, a geração de tokens no Elasticsearch compreende três etapas principais:

  1. Remoção de caracteres desnecessários através de zero ou mais char_filters. Em nosso exemplo, estamos removendo elementos HTML dentro do campo body_content através do filtro html_strip .
  2. Separando os tokens do conteúdo com o tokenizador standard , que irá separar por espaçamento e pontuação chave.
  3. Remover tokens indesejados ou transformar tokens do fluxo de saída do tokenizador usando zero ou mais opções filter , como o filtro de token lowercaseou stemmers como o stemmer snowballpara transformar tokens de volta à sua raiz de idioma.

Pesquisando no Elasticsearch com Go

Ao realizar consultas com o cliente Go, especificamos o índice que desejamos pesquisar e passamos a consulta e outras opções, como no exemplo abaixo:

No exemplo acima, realizamos uma consulta matchpadrão para encontrar qualquer documento em nosso índice que contenha a string especificada passada para nossa função. Observe que passamos um novo contexto vazio para a execução da pesquisa por meio de Do(context.Background()). Além disso, quaisquer erros retornados pelo Elasticsearch são enviados para o atributo err para registro e tratamento de erros.

Os resultados são retornados em res.Hits.Hits com o atributo _Source contendo o próprio documento em formato JSON. Para converter essa fonte em uma estrutura compatível com Go, precisamos desserializar a resposta JSON usando o pacote `encoding/json` do Go, como mostrado no exemplo abaixo:

A busca e a desserialização da consulta gopher retornarão a página da Wikipédia sobre Gopher, como esperado:

No entanto, se consultarmos What do Gophers eat? , não obtemos exatamente os resultados que desejamos:

Uma simples busca por palavra-chave permite que os resultados sejam retornados ao seu aplicativo Go de forma eficiente e com a qual já estamos familiarizados a partir dos aplicativos que utilizamos. Também funciona muito bem para correspondências exatas de termos relevantes para cenários como a busca por uma empresa ou termo específico.

No entanto, como podemos ver acima, ele tem dificuldades em identificar o contexto e a semântica devido ao problema de incompatibilidade de vocabulário. Além disso, o suporte para formatos de arquivo não textuais, como imagens e áudio, é um desafio.

Conclusão

Aqui discutimos como realizar consultas de texto tradicionais no Elasticsearch usando o cliente Elasticsearch Go. Dado que o Go é amplamente utilizado para scripts de infraestrutura e construção de servidores web, é útil saber como pesquisar em Go.

Confira o repositório do GitHub para acessar todo o código desta série. Continue para a parte 2 para obter uma visão geral da pesquisa vetorial e como realizar pesquisas vetoriais em Go. Até lá, boa caçada aos esquilos!

Recursos

  1. Guia do Elasticsearch
  2. Cliente Go do Elasticsearch
  3. Entendendo a Análise no Elasticsearch (Analisadores) por Bo Andersen | #CodingExplained

Quão útil foi este conteúdo?

Não útil

Um pouco útil

Muito útil

Conteúdo relacionado

Pronto para criar buscas de última geração?

Uma pesquisa suficientemente avançada não se consegue apenas com o esforço de uma só pessoa. O Elasticsearch é impulsionado por cientistas de dados, especialistas em operações de aprendizado de máquina, engenheiros e muitos outros que são tão apaixonados por buscas quanto você. Vamos nos conectar e trabalhar juntos para construir a experiência de busca mágica que lhe trará os resultados desejados.

Experimente você mesmo(a)