Artigos

O que é Elasticsearch e como sua empresa pode aproveitá-lo?

Nos últimos anos, armazenar, analisar e gerenciar dados com eficiência se tornou uma prioridade na maioria das empresas. Algumas das empresas de tecnologia mais importantes de hoje alcançaram esse nível de sucesso porque priorizaram a gestão de dados. No entanto, os algoritmos de aprendizado de máquina e todos os benefícios que essas tecnologias podem trazer à sua empresa (explicados com mais detalhes em uma publicação anterior) exigem uma quantidade considerável de dados de entrada.

A melhor abordagem para armazenar seus dados depende de vários fatores. Bancos de dados SQL tradicionais, como PostgreSQL (postgres) ou MySQL, são uma boa opção para armazenar dados estruturados. A principal vantagem desse tipo de banco é ter mecanismos para garantir a qualidade e a consistência dos dados, permitindo modelar relações complexas entre objetos. Essa vantagem explica sua popularidade e por que atualmente são usados pela maioria dos sistemas.

No entanto, quando falamos de armazenar e buscar informações em grandes conjuntos de textos não estruturados, como avaliações de usuários, e-mails de reclamações ou registros de atividade de usuários, esses bancos de dados não são a melhor opção. O desempenho das buscas de texto em bancos SQL costuma ser lento, e às vezes é difícil incluir conceitos linguísticos como sinônimos, palavras de parada etc.

Há recursos, como a busca de texto completo do postgres (descrita em uma publicação anterior), que melhoram as capacidades de busca de texto dos bancos de dados e permitem implementar um tipo de busca inteligente sobre um esquema SQL. Essa opção funciona muito bem quando seus dados estão armazenados de forma estruturada e você quer adicionar uma função de busca de texto. No entanto, quando há uma quantidade considerável de dados não estruturados, os bancos tradicionais geralmente não são a melhor opção. Nesses casos, faz mais sentido usar um mecanismo específico de busca e análise, como Elasticsearch.

O que é Elasticsearch?

Elasticsearch é um mecanismo de busca e análise que suporta vários tipos de dados, incluindo texto, datas, números etc. É uma solução distribuída por padrão; por isso, sempre que falamos de um servidor Elasticsearch, estamos nos referindo a um cluster com potencialmente vários nós. A interação com o mecanismo é feita por APIs REST e uma linguagem específica de domínio (DSL), geralmente chamada de Elasticsearch DSL.

No Elasticsearch, há dois termos importantes: documentos e índices.

  • Um documento é qualquer informação que possa ser representada como um conjunto de chaves com seus respectivos valores. Um exemplo seria um artigo de jornal representado com as chaves: title, content, publish_date, author e source.

  • Um índice é uma coleção de documentos relacionados entre si. Seguindo o exemplo anterior, um índice poderia conter todos os artigos de uma fonte específica ou artigos sobre determinado assunto (esportes, saúde etc.).

Internamente, Elasticsearch armazena os documentos como JSON e os índices como um índice invertido. Um índice invertido é uma estrutura de dados projetada para permitir buscas eficientes de texto completo. É um mapa hash que lista cada palavra única que aparece em qualquer documento e identifica todos os documentos em que cada palavra ocorre.

O que é ELK?

Se você começar a pesquisar Elasticsearch, encontrará imediatamente a sigla ELK (Elasticsearch, Logstash e Kibana), também conhecida como Elastic Stack. Esse conjunto de ferramentas ajuda a trabalhar com seus dados, cobrindo recursos como extração, carregamento, armazenamento e visualização.

Como vimos anteriormente, Elasticsearch é o mecanismo responsável pelo armazenamento e o núcleo de ELK. Logstash é a ferramenta mais utilizada para inserir dados das fontes originais no cluster Elasticsearch. Alguns dos seus recursos são a agregação de diferentes fontes e a transformação de dados. Kibana é a ferramenta de visualização e gestão de dados oferecida pelo conjunto, com uma interface web que inclui gráficos, painéis e módulos de ferramentas para desenvolvedores que ajudam a analisar os dados em tempo real.

Quando usar Elasticsearch

Como Elasticsearch suporta vários tipos de dados, pode ser usado para armazená-los em praticamente qualquer situação. No entanto, não foi projetado para ter bom desempenho em todos os cenários. Por isso, se você escolher Elasticsearch para o problema errado, sua solução continuará funcionando, mas o desempenho ou a usabilidade provavelmente não serão os melhores.

Veja algumas dicas para verificar se Elasticsearch é uma boa opção para seu projeto:

Sua empresa gerencia muitos dados de texto.

Como mencionamos anteriormente, a principal vantagem do Elasticsearch é usar um índice invertido para armazenar informações. Essa estrutura de dados é uma das melhores para armazenar informações textuais.

Sua empresa precisa analisar e buscar dados de texto.

A principal vantagem do índice invertido não é apenas poder armazenar informações textuais (você pode ter o mesmo recurso usando um banco NoSQL como MongoDB), mas também buscá-las com eficiência. Elasticsearch é conhecido por executar buscas complexas em tempo real. Além disso, suas buscas podem ser personalizadas para obter resultados melhores. Por exemplo, fuzzy query considera erros de digitação nos dados.

Seus dados não mudam com frequência.

Também é importante considerar as desvantagens do Elasticsearch. Um ótimo desempenho de busca em dados textuais tem como contrapartida inserções ou atualizações lentas. Cada vez que um registro é inserido ou modificado, Elasticsearch precisa atualizar o índice invertido, uma operação que leva tempo. Se sua empresa modifica os dados com frequência e essa operação seria eficiente de outra maneira, talvez Elasticsearch não seja a melhor opção.

Por que usar Elasticsearch?

Agora que entendemos o que é Elasticsearch e quando pode ser usado, vamos ver outros aspectos que o tornam uma boa solução para sua empresa.

Escalabilidade

Elasticsearch é distribuído por natureza, o que torna a solução escalável por padrão. Depois de implantar a solução, aumentar o número de nós do cluster é bastante fácil. Esse recurso permite melhorar o desempenho facilmente, adicionar mais nós ao cluster e implementar a duplicação dos dados, dando robustez à sua solução.

Comunidade de código aberto

Elasticsearch é uma tecnologia de código aberto com 10 anos de existência, apoiada por uma comunidade madura. Hoje, existem centenas de soluções pagas de ETL e inteligência de negócios que podem ser usadas como alternativa ao Elasticsearch. No entanto, algumas têm menos recursos ou não podem ser facilmente adaptadas ao seu produto. Além disso, o suporte costuma ser pago ou a comunidade é pequena, oferecendo poucas opções. Por outro lado, Elasticsearch tem uma grande comunidade que oferece muito suporte. Se você iniciar um projeto com Elasticsearch, os fóruns têm toda a ajuda de que precisará.

Conjunto completo de ETL

Como mencionamos anteriormente, Elasticsearch faz parte de ELK, permitindo implantar facilmente uma solução completa com pouca configuração. As alternativas ao Elasticsearch cobrem apenas os mecanismos de busca e deixam a responsabilidade de carregar os dados para você. No Elasticsearch, essa parte do processo é resolvida pelo logstash, de modo que só cabe a você configurá-lo corretamente.

Facilidades para transformar seus dados

Algo de que ainda não falamos é a capacidade integrada do Elasticsearch de transformar dados. Antes de inseri-los nos índices, Elasticsearch os processa usando analisadores. Eles aplicam algumas transformações aos dados brutos, como remover palavras de parada, que garantem uma busca precisa. Elasticsearch define um conjunto padrão de analisadores que podem ser aplicados. Além disso, você pode criar analisadores personalizados e adicioná-los aos seus índices. Um exemplo seria a substituição de entidades nos dados.

DSL específico de busca

No Elasticsearch, todas as buscas são feitas usando consultas escritas em um DSL pensado para cobrir as situações de busca mais comuns. O DSL do elastic permite personalizar as buscas para obter exatamente os resultados esperados, com opções como match, bool e fuzzy, entre outras.

Gestão completa por APIs REST

Todas as operações no cluster Elasticsearch são feitas por uma API REST. Essa arquitetura facilita a integração com outros componentes sem precisar instalar um pacote, uma biblioteca ou um componente específico.


Em resumo, Elasticsearch é uma tecnologia de busca madura que pode ajudar sua empresa a analisar os dados textuais com eficiência. Esperamos que esta publicação tenha ajudado você a entender o que é Elasticsearch e por que pode ser uma boa opção para sua empresa.

“O que é Elasticsearch e como sua empresa pode aproveitá-lo?” por Pablo Grill está sob a licença CC BY SA. Os exemplos de código-fonte estão sob a licença MIT.

Foto de Markus Winkler.

Classificado em Pesquisa e aprendizado.

Leituras relacionadas