38 Index Aliase

In der Praxis werden Sie häufig mit Situationen konfrontiert, in denen Sie flexibel zwischen verschiedenen Indizes wechseln oder mehrere Indizes gleichzeitig abfragen möchten. Index Aliase sind das Werkzeug, das OpenSearch für genau diese Anforderungen bereitstellt. Stellen Sie sich einen Alias als virtuellen Indexnamen vor, der auf einen oder mehrere reale Indizes zeigen kann.

38.1 Das Konzept der Aliase verstehen

Nehmen wir ein praktisches Beispiel: Sie speichern Logdaten in monatlichen Indizes mit Namen wie logs-2024-01, logs-2024-02 und so weiter. Wenn Sie regelmäßig die Daten der letzten zwei Monate abfragen müssen, wäre es umständlich, die Indexnamen jedes Mal anzupassen. Mit einem Alias namens “letzte_zwei_monate” können Sie die Abfrage vereinfachen und den Alias monatlich aktualisieren.

Ein weiterer wichtiger Anwendungsfall ist die Neuindizierung von Daten ohne Ausfallzeiten. Wenn Ihre Anwendungen Aliase statt direkter Indexnamen verwenden, können Sie im Hintergrund einen neuen Index erstellen und den Alias dann atomisch vom alten auf den neuen Index umschalten.

38.2 Aliase in der Praxis

Lassen Sie uns die Arbeit mit Aliesen anhand praktischer Beispiele erkunden. Zunächst erstellen wir einen einfachen Alias:

POST _aliases
{
  "actions": [
    {
      "add": {
        "index": "logs-2024-01",
        "alias": "aktuelle_logs"
      }
    }
  ]
}

Dieser Befehl erstellt einen Alias namens “aktuelle_logs”, der auf den Index “logs-2024-01” zeigt. Wenn der nächste Monat beginnt, können wir den Alias aktualisieren:

POST _aliases
{
  "actions": [
    {
      "remove": {
        "index": "logs-2024-01",
        "alias": "aktuelle_logs"
      }
    },
    {
      "add": {
        "index": "logs-2024-02",
        "alias": "aktuelle_logs"
      }
    }
  ]
}

Beachten Sie, wie wir beide Operationen - das Entfernen des alten und das Hinzufügen des neuen Index - in einer einzigen atomaren Operation durchführen. Dies garantiert, dass zu keinem Zeitpunkt der Alias ungültig ist oder auf beide Indizes gleichzeitig zeigt.

38.3 Erweiterte Aliasfunktionen

OpenSearch bietet noch weitere nützliche Funktionen für Aliase. Eine besonders praktische ist die Möglichkeit, gefilterte Aliase zu erstellen. Ein gefilterter Alias zeigt nur auf einen Teil der Dokumente eines Index:

POST _aliases
{
  "actions": [
    {
      "add": {
        "index": "bestellungen",
        "alias": "wichtige_bestellungen",
        "filter": {
          "range": {
            "bestellwert": {
              "gte": 1000
            }
          }
        }
      }
    }
  ]
}

Dieser Alias zeigt nur auf Bestellungen mit einem Wert von mindestens 1000. Wenn Sie den Alias abfragen, erhalten Sie automatisch nur die gefilterten Dokumente.

38.4 Aliase beim Indexdesign

Die Verwendung von Aliesen sollte von Anfang an Teil Ihres Indexdesigns sein. Bereits bei der Erstellung eines Index können Sie Aliase definieren:

PUT kundenauftraege-v1
{
  "aliases": {
    "kundenauftraege": {},
    "alle_auftraege": {}
  },
  "mappings": {
    "properties": {
      "auftragsnummer": { "type": "keyword" },
      "kunde": { "type": "keyword" },
      "betrag": { "type": "float" }
    }
  }
}

Dies ist besonders nützlich für eine zukunftssichere Architektur. Wenn Sie später das Mapping ändern müssen (was in OpenSearch nicht direkt möglich ist), können Sie:

  1. Einen neuen Index mit dem aktualisierten Mapping erstellen (kundenauftraege-v2)
  2. Die Daten in den neuen Index reindizieren
  3. Die Aliase atomisch umschalten

38.5 Aliase verwalten

Die Verwaltung von Aliesen sollte regelmäßig und systematisch erfolgen. OpenSearch bietet verschiedene Befehle zur Überwachung:

Um alle vorhandenen Aliase anzuzeigen:

GET _cat/aliases?v

Um zu prüfen, auf welche Indizes ein bestimmter Alias zeigt:

GET _alias/kundenauftraege

Um zu sehen, welche Aliase auf einen bestimmten Index zeigen:

GET /kundenauftraege-v1/_alias/*

38.6 Best Practices für Aliase

Die Arbeit mit Aliesen wird durch einige bewährte Praktiken erleichtert:

Verwenden Sie aussagekräftige Namen für Ihre Aliase, die ihre Funktion beschreiben. Ein Alias wie “letzte_30_tage” ist selbsterklärend und wartungsfreundlich.

Planen Sie die Aliasstrategie vor der Implementierung. Überlegen Sie, welche Abfragemuster Ihre Anwendung hat und wie Aliase diese vereinfachen können.

Implementieren Sie automatisierte Prozesse für die regelmäßige Aktualisierung von zeitbasierten Aliesen. Dies verhindert manuelle Fehler und stellt sicher, dass die Aliase immer aktuell sind.

Dokumentieren Sie Ihre Aliasstruktur sorgfältig, besonders wenn Sie gefilterte Aliase verwenden. Dies hilft neuen Teammitgliedern, die Datenorganisation schnell zu verstehen.

38.7 Praktische Anwendungsfälle

Lassen Sie uns einige typische Szenarien betrachten, in denen Aliase besonders nützlich sind:

38.7.1 Zeitbasierte Daten

Für Logdaten oder andere zeitbasierte Informationen:

POST _aliases
{
  "actions": [
    {
      "add": {
        "index": "logs-2024-*",
        "alias": "alle_logs"
      }
    },
    {
      "add": {
        "index": "logs-2024-01",
        "alias": "aktuelle_logs"
      }
    }
  ]
}

38.7.2 Mandantenfähigkeit

Für Multi-Tenant-Anwendungen:

POST _aliases
{
  "actions": [
    {
      "add": {
        "index": "kunden",
        "alias": "kunde_123",
        "filter": {
          "term": {
            "mandant_id": "123"
          }
        }
      }
    }
  ]
}

38.7.3 Zero-Downtime Reindizierung

Für Updates ohne Ausfallzeit:

# Schritt 1: Neuen Index erstellen
PUT kunden_v2
{
  "mappings": {
    "properties": {
      "email": { "type": "keyword" }
    }
  }
}

# Schritt 2: Daten reindizieren
POST _reindex
{
  "source": {
    "index": "kunden_v1"
  },
  "dest": {
    "index": "kunden_v2"
  }
}

# Schritt 3: Alias atomisch umschalten
POST _aliases
{
  "actions": [
    {
      "remove": {
        "index": "kunden_v1",
        "alias": "kunden"
      }
    },
    {
      "add": {
        "index": "kunden_v2",
        "alias": "kunden"
      }
    }
  ]
}