15 Index Management API

15.1 Einführung in die Indexierung

Bevor wir uns mit den Details des Index Managements befassen, ist es wichtig zu verstehen, was Indexierung in OpenSearch bedeutet. Indexierung ist die Methode, mit der Suchmaschinen Daten für einen schnellen Zugriff organisieren. Die daraus resultierende Struktur wird passenderweise als Index bezeichnet.

In OpenSearch ist die grundlegende Dateneinheit ein JSON-Dokument. Innerhalb eines Index identifiziert OpenSearch jedes Dokument über eine eindeutige ID.

15.2 Grundlegende Index-Operationen

15.2.1 Dokumente Indexieren

OpenSearch bietet zwei Hauptmethoden zur Indexierung von Dokumenten:

  1. Index API für einzelne Dokumente:
PUT <index>/_doc/<id>
{ "title": "Ein JSON Dokument" }

Diese Methode eignet sich besonders für:

  1. Bulk API für Massendaten:
POST _bulk
{ "index": { "_index": "<index>", "_id": "<id>" } }
{ "title": "Ein JSON Dokument" }

Besonders geeignet für:

15.2.2 Wichtige Einschränkungen und Best Practices

15.2.3 Index-Verwaltung

15.2.3.1 Index erstellen

PUT more-movies
{
  "settings": {
    "number_of_shards": 6,
    "number_of_replicas": 2
  }
}

Wichtig: Standardmäßig wird ein Index mit einem primären Shard und einer Replik erstellt. Für spezifische Anforderungen sollten Sie den Index vor dem Hinzufügen von Dokumenten mit angepassten Einstellungen erstellen.

15.2.3.2 Benennungsregeln für Indices

Beim Erstellen von Indices müssen folgende Regeln beachtet werden:

15.3 Fortgeschrittene Konzepte

15.3.1 Optimistic Concurrency Control

OpenSearch verwendet ein System zur Vermeidung von Konflikten bei gleichzeitigen Updates:

  1. Jedes Dokument hat eindeutige _seq_no und _primary_term Werte
  2. Bei Updates können diese Werte geprüft werden:
POST movies/_update/2?if_seq_no=3&if_primary_term=1
{
  "doc": {
    "title": "Neuer Titel"
  }
}

15.3.2 Upsert-Operationen

Für bedingte Updates basierend auf der Existenz eines Dokuments:

POST movies/_update/2
{
  "doc": {
    "title": "Neuer Titel"
  },
  "upsert": {
    "title": "Standardtitel",
    "genre": ["Standard"]
  }
}

15.4 Daten Lesen und Aktualisieren

15.4.1 Einzelne Dokumente abrufen

GET movies/_doc/1

15.4.2 Mehrere Dokumente gleichzeitig abrufen

GET _mget
{
  "docs": [
    {
      "_index": "movies",
      "_id": "1"
    },
    {
      "_index": "movies",
      "_id": "2"
    }
  ]
}

15.4.3 Dokumentenexistenz prüfen

HEAD movies/_doc/<doc-id>

15.4.4 Updates

  1. Partielle Updates (POST):
POST movies/_update/1
{
  "doc": {
    "title": "Neuer Titel",
    "genre": ["Neu"]
  }
}
  1. Vollständiger Dokumentersatz (PUT):
PUT movies/_doc/1
{
  "title": "Komplett neues Dokument"
}

15.5 Fehlerbehandlung und Monitoring

15.6 Weiterführende Themen