Cliente Elasticsearch C++: guia completo para trabalhar com o motor de busca

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Cliente Elasticsearch C++: ferramenta poderosa para busca de alto desempenho



Elasticsearch é um sistema de busca distribuído baseado no Apache Lucene, amplamente utilizado para busca em texto completo, análise de logs e processamento de grandes volumes de dados. Embora não exista um cliente oficial para C++, os desenvolvedores podem interagir eficientemente com o Elasticsearch via REST API usando a biblioteca elasticlient — um cliente C++ leve, criado especificamente para trabalhar com Elasticsearch.



A biblioteca elasticlient fornece uma interface conveniente para realizar todas as operações principais: indexação de documentos, busca, atualização, exclusão e gerenciamento de cluster. Ela é construída sobre a biblioteca libcurl para requisições HTTP e nlohmann/json para manipulação de JSON, garantindo alto desempenho e compatibilidade com os padrões modernos C++17/20.



Principais recursos do elasticlient

  • Suporte completo à REST API do Elasticsearch (versões 6.x, 7.x e 8.x)
  • Requisições assíncronas e síncronas
  • Serialização/desserialização automática de JSON via nlohmann/json
  • Suporte a operações bulk para carregamento em massa de dados
  • Gerenciamento de índices (criação, exclusão, configuração de mapeamento)
  • Trabalho com consultas de busca (match, term, range, bool e outras)
  • Tratamento de erros e novas tentativas de conexão


Instalação e configuração

Para instalar o elasticlient, você pode usar CMake e vcpkg ou compilar manualmente. O método recomendado é via vcpkg:

# Instalação via vcpkgvcpkg install elasticlient

# Inclusão no CMakeLists.txtfind_package(elasticlient REQUIRED)target_link_libraries(my_app PRIVATE elasticlient::elasticlient)


Também serão necessárias as dependências:

  • libcurl (com suporte a HTTPS)
  • nlohmann/json (versão 3.9+)
  • Compilador C++ com suporte a C++17 (GCC 8+, Clang 7+, MSVC 2019+)


Exemplos básicos de uso



Conexão ao Elasticsearch

#include <elasticlient/client.h>

int main() { // Criando um cliente com conexão à instância local elasticlient::Client client("http://localhost:9200"); // Verificando a conexão auto status = client.get("/"); if (status.statusCode() == 200) { std::cout << "Conectado ao Elasticsearch!" << std::endl; } return 0;}


Indexação de documento

#include <elasticlient/client.h>#include <nlohmann/json.hpp>

using json = nlohmann::json;

int main() { elasticlient::Client client("http://localhost:9200"); // Criando um documento json document = { {"title", "Introdução ao C++"}, {"author", "Ivan Petrov"}, {"year", 2023}, {"tags", {"programação", "C++", "livro didático"}} }; // Indexando no índice "books" com ID "1" auto response = client.index("books", "_doc", "1", document.dump()); if (response.statusCode() == 201) { std::cout << "Documento indexado com sucesso!" << std::endl; } return 0;}


Busca de documentos

#include <elasticlient/client.h>#include <iostream>

int main() { elasticlient::Client client("http://localhost:9200"); // Consulta de busca json query = { {"query", { {"match", { {"title", "C++"} }} }} }; auto response = client.search("books", "_search", query.dump()); if (response.statusCode() == 200) { auto results = json::parse(response.body()); for (const auto& hit : results["hits"]["hits"]) { std::cout << "Encontrado: " << hit["_source"]["title"] << std::endl; } } retu

Recommendations