10 Kommunikation mit OpenSearch

OpenSearch stellt eine leistungsfähige REST-API zur Verfügung, die das Herzstück der Kommunikation mit dem System bildet. In diesem Kapitel lernen Sie, wie Sie über diese Schnittstelle mit OpenSearch interagieren können. Wir beginnen mit den grundlegenden Konzepten und arbeiten uns dann zu komplexeren Anwendungsfällen vor.

10.1 Die REST-API verstehen

Die REST-API von OpenSearch ermöglicht es Ihnen, nahezu alle Aspekte des Systems zu steuern und zu überwachen. Sie können Einstellungen ändern, Indizes verwalten, die Cluster-Gesundheit überprüfen und Statistiken abrufen. Diese Vielseitigkeit macht die API zum zentralen Werkzeug in der täglichen Arbeit mit OpenSearch.

Die Kommunikation erfolgt über Standard-HTTP-Methoden wie GET, POST, PUT und DELETE. Dies bedeutet, dass Sie jeden HTTP-Client verwenden können, sei es curl auf der Kommandozeile, eine Programmiersprache Ihrer Wahl oder spezialisierte Tools wie Postman. Diese Flexibilität erlaubt es Ihnen, die für Ihren Anwendungsfall am besten geeigneten Werkzeuge zu wählen.

10.2 Praktische Anwendung der API

Lassen Sie uns die Verwendung der API anhand praktischer Beispiele erkunden. Beginnen wir mit einer einfachen Anfrage zur Überprüfung der Cluster-Gesundheit. Eine solche Überprüfung ist oft der erste Schritt bei der Arbeit mit OpenSearch, da sie Ihnen schnell zeigt, ob das System ordnungsgemäß funktioniert.

Eine Basis-Anfrage ohne Security-Plugin sieht so aus:

curl -X GET "http://localhost:9200/_cluster/health"

Wenn Sie das Security-Plugin verwenden, was in Produktivumgebungen dringend empfohlen wird, müssen Sie Authentifizierungsinformationen mitgeben:

curl -X GET "http://localhost:9200/_cluster/health" -ku admin:<admin-password>

OpenSearch antwortet standardmäßig mit kompaktem JSON. Für eine bessere Lesbarkeit, besonders während der Entwicklung und Fehlersuche, können Sie das pretty-Flag verwenden:

curl -X GET "https://localhost:9200/_cluster/health?pretty"

10.3 Arbeiten mit Dokumenten

Das Herzstück von OpenSearch ist die Verwaltung von Dokumenten. Ein Dokument ist dabei die grundlegende Einheit der Information. Lassen Sie uns den Lebenszyklus eines Dokuments durchgehen.

10.3.1 Dokumente erstellen und indexieren

Um ein neues Dokument zu erstellen, verwenden wir die PUT-Methode. Hier ein Beispiel für die Erstellung eines Mitarbeiterdatensatzes:

PUT /mitarbeiter/_doc/1
{
  "name": "Maria Schmidt",
  "abteilung": "Entwicklung",
  "eintrittsdatum": "2024-01-15",
  "skills": ["Java", "OpenSearch", "Docker"]
}

OpenSearch verarbeitet dieses Dokument und erstellt automatisch ein passendes Mapping für die Felder. Dieses Mapping können Sie sich anzeigen lassen:

GET /mitarbeiter/_mapping

10.3.2 Dokumente suchen und aktualisieren

Die Suche nach Dokumenten erfolgt über die Search-API. Eine einfache Suche könnte so aussehen:

GET /mitarbeiter/_search
{
  "query": {
    "match": {
      "abteilung": "Entwicklung"
    }
  }
}

Dokumente in OpenSearch sind grundsätzlich unveränderlich, aber wir können sie aktualisieren, indem wir sie ersetzen oder teilweise modifizieren. Eine Teilaktualisierung sieht so aus:

POST /mitarbeiter/_update/1
{
  "doc": {
    "skills": ["Java", "OpenSearch", "Docker", "Kubernetes"]
  }
}

10.4 OpenSearch Dashboards Development Console

Neben der direkten API-Nutzung bietet OpenSearch Dashboards eine komfortable Entwicklungsumgebung: die Dev Tools Console. Sie erreichen sie in OpenSearch Dashboards unter Management > Dev Tools. Die Console bietet mehrere Vorteile:

In der Console können Sie Anfragen in einer vereinfachten Form schreiben:

GET _cluster/health

Dies entspricht dem vollständigen curl-Befehl, ist aber wesentlich übersichtlicher.

10.5 Index-Konfiguration und -Verwaltung

Die Konfiguration eines Index ist ein wichtiger Aspekt der Arbeit mit OpenSearch. Ein Index kann mit spezifischen Mappings und Einstellungen erstellt werden:

PUT /mitarbeiter
{
  "settings": {
    "index.number_of_shards": 1,
    "index.number_of_replicas": 1
  },
  "mappings": {
    "properties": {
      "name": {
        "type": "text",
        "fields": {
          "keyword": {
            "type": "keyword"
          }
        }
      },
      "eintrittsdatum": {
        "type": "date"
      }
    }
  }
}

Diese Konfiguration legt fest, wie OpenSearch die Daten speichert und verarbeitet. Dabei ist zu beachten, dass Feldtypen nach der Erstellung nicht mehr geändert werden können. Eine Änderung erfordert das Löschen und Neuerstellen des Index.

10.6 Praktische Übungen

Um die gelernten Konzepte zu vertiefen, sollten Sie folgende Übungen durchführen:

Erstellen Sie einen neuen Index für Projektdaten. Definieren Sie ein Mapping, das verschiedene Feldtypen verwendet. Experimentieren Sie dann mit der Erstellung, Suche und Aktualisierung von Dokumenten. Beobachten Sie dabei, wie OpenSearch die Daten verarbeitet und wie sich verschiedene Abfragetypen auf die Ergebnisse auswirken.

Nutzen Sie die Dev Tools Console, um komplexere Abfragen zu erstellen. Versuchen Sie, Dokumente nach mehreren Kriterien zu filtern und die Ergebnisse nach verschiedenen Feldern zu sortieren. Experimentieren Sie mit verschiedenen Suchtypen und beobachten Sie, wie sich die Relevanz der Ergebnisse verändert.

10.7 Übliche Herausforderungen

Bei der Arbeit mit der OpenSearch-API werden Sie möglicherweise auf einige typische Herausforderungen stoßen. Hier sind die Wichtigsten zu beachten:

Die Handhabung von Datentypen erfordert besondere Aufmerksamkeit. Wenn Sie beispielsweise ein Datum als String übermitteln, muss es im korrekten Format vorliegen. OpenSearch erwartet Datumsangaben standardmäßig im ISO-8601-Format.

Die Versionierung von Dokumenten kann zu Konflikten führen, wenn mehrere Prozesse gleichzeitig Änderungen vornehmen. OpenSearch bietet verschiedene Mechanismen zur Konflikterkennung und -behandlung, die Sie je nach Anwendungsfall nutzen sollten.

Die Wahl der richtigen Suchstrategie hat erheblichen Einfluss auf die Performance. Vermeiden Sie zu breite Suchanfragen auf großen Datenmengen und nutzen Sie Filter, wo immer möglich.

Communicate with OpenSearch