Elasticsearch C++-Client: Vollständiger Leitfaden für die Arbeit mit der Suchmaschine

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Elasticsearch C++-Client: Ein leistungsstarkes Werkzeug für die Hochleistungssuche



Elasticsearch ist ein verteiltes Suchsystem auf Basis von Apache Lucene, das häufig für die Volltextsuche, Log-Analyse und die Verarbeitung großer Datenmengen eingesetzt wird. Obwohl ein offizieller Client für C++ fehlt, können Entwickler effektiv über die REST API mit Elasticsearch interagieren, und zwar mit der Bibliothek elasticlient – einem leichtgewichtigen C++-Client, der speziell für die Arbeit mit Elasticsearch entwickelt wurde.



Die Bibliothek elasticlient bietet eine benutzerfreundliche Schnittstelle für alle grundlegenden Operationen: Indizierung von Dokumenten, Suche, Aktualisierung, Löschung und Cluster-Verwaltung. Sie basiert auf der Bibliothek libcurl für HTTP-Anfragen und nlohmann/json für die Arbeit mit JSON, was eine hohe Leistung und Kompatibilität mit modernen C++17/20-Standards gewährleistet.



Hauptfunktionen von elasticlient

  • Vollständige Unterstützung der Elasticsearch REST API (Versionen 6.x, 7.x und 8.x)
  • Asynchrone und synchrone Anfragen
  • Automatische Serialisierung/Deserialisierung von JSON über nlohmann/json
  • Unterstützung von Bulk-Operationen für den Massendatenimport
  • Index-Verwaltung (Erstellen, Löschen, Mapping-Konfiguration)
  • Arbeit mit Suchanfragen (match, term, range, bool u. a.)
  • Fehlerbehandlung und erneute Verbindungsversuche


Installation und Konfiguration

Für die Installation von elasticlient können Sie CMake und vcpkg verwenden oder manuell kompilieren. Die empfohlene Methode ist die Verwendung von vcpkg:

# Installation über vcpkgvcpkg install elasticlient

# Einbindung in CMakeLists.txtfind_package(elasticlient REQUIRED)target_link_libraries(my_app PRIVATE elasticlient::elasticlient)


Außerdem werden folgende Abhängigkeiten benötigt:

  • libcurl (mit HTTPS-Unterstützung)
  • nlohmann/json (Version 3.9+)
  • C++-Compiler mit C++17-Unterstützung (GCC 8+, Clang 7+, MSVC 2019+)


Grundlegende Anwendungsbeispiele



Verbindung zu Elasticsearch herstellen

#include <elasticlient/client.h>

int main() { // Client erstellen und mit lokaler Instanz verbinden elasticlient::Client client("http://localhost:9200"); // Verbindung prüfen auto status = client.get("/"); if (status.statusCode() == 200) { std::cout << "Connected to Elasticsearch!" << std::endl; } return 0;}


Dokument indizieren

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

using json = nlohmann::json;

int main() { elasticlient::Client client("http://localhost:9200"); // Dokument erstellen json document = { {"title", "Einführung in C++"}, {"author", "Ivan Petrov"}, {"year", 2023}, {"tags", {"Programmierung", "C++", "Lehrbuch"}} }; // Indizierung im Index "books" mit der ID "1" auto response = client.index("books", "_doc", "1", document.dump()); if (response.statusCode() == 201) { std::cout << "Document indexed successfully!" << std::endl; } return 0;}


Dokumente suchen

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

int main() { elasticlient::Client client("http://localhost:9200"); // Suchanfrage 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 << "Found: " << hit["_source"]["title"] << std::endl; } } retu

Empfehlungen