Index Context ist eine experimentelle Funktion in OpenSearch, die einen innovativen Ansatz zur Indexkonfiguration bietet. Stellen Sie sich Index Context wie einen Experten vor, der bereits weiß, wie bestimmte Arten von Daten am besten gespeichert und verwaltet werden sollten. In diesem Kapitel erkunden wir, wie diese Funktion uns dabei hilft, Indizes optimal für spezifische Anwendungsfälle zu konfigurieren.
Wenn wir einen Index erstellen, haben wir oft einen bestimmten Anwendungsfall im Sinn - sei es die Speicherung von Metriken, Logs oder anderen spezialisierten Datentypen. Jeder dieser Anwendungsfälle hat seine eigenen Anforderungen an die Indexkonfiguration. Index Context automatisiert diesen Prozess, indem es vordefinierte, optimierte Einstellungen für verschiedene Anwendungsfälle bereitstellt.
Nehmen wir als Beispiel die Speicherung von Metriken. Metriken haben besondere Eigenschaften:
Ein Index Context für Metriken würde automatisch Einstellungen wählen, die für diese Charakteristika optimiert sind.
Da es sich um eine experimentelle Funktion handelt, müssen wir zunächst einige Vorbereitungen treffen. Der Prozess umfasst drei Schritte:
Erstens installieren wir das opensearch-system-templates Plugin auf allen Nodes unseres Clusters. Dies stellt die Grundfunktionalität bereit.
Zweitens aktivieren wir das Feature-Flag:
opensearch.experimental.feature.application_templates.enabled: trueDrittens aktivieren wir die Funktion auf Cluster-Ebene:
cluster.application_templates.enabled: trueLassen Sie uns die Verwendung von Index Context anhand praktischer Beispiele erkunden. Beginnen wir mit einem einfachen Metriken-Index:
PUT /server-metriken
{
"context": {
"name": "metrics"
}
}
Diese scheinbar einfache Konfiguration bewirkt im Hintergrund mehrere optimierte Einstellungen. Lassen Sie uns das Ergebnis betrachten:
GET /server-metriken
Die Antwort zeigt uns die automatisch angewandten Optimierungen:
{
"server-metriken": {
"settings": {
"index": {
"codec": "zstd_no_dict",
"refresh_interval": "60s",
"number_of_shards": "1",
"merge": {
"policy": "log_byte_size"
}
}
}
}
}
Jede dieser Einstellungen wurde sorgfältig für Metrik-Daten optimiert:
Index Context lässt sich auch in Templates integrieren, was besonders nützlich ist, wenn wir regelmäßig neue Indizes erstellen. Ein typisches Beispiel für Logging:
PUT _index_template/anwendungslogs
{
"context": {
"name": "logs",
"version": "1"
},
"index_patterns": [
"logs-*"
]
}
Dieses Template wird automatisch auf alle Indizes angewendet, die dem Muster “logs-*” entsprechen. Dabei werden die optimierten Einstellungen für Logging-Daten angewendet.
OpenSearch bietet verschiedene vordefinierte Kontexte, die jeweils für spezifische Anwendungsfälle optimiert sind:
Der “logs” Kontext ist für allgemeine Logging-Szenarien optimiert. Er berücksichtigt die typischen Charakteristika von Logdaten wie hohe Schreibrate und seltene Updates.
Der “metrics” Kontext ist für Zeitreihendaten und Metriken ausgelegt. Er optimiert die Einstellungen für häufige Schreibvorgänge und effiziente Aggregationen.
Spezialisierte Kontexte wie “nginx-logs” oder “k8s-logs” bieten zusätzliche Optimierungen für spezifische Anwendungsfälle. Der nginx-logs Kontext beispielsweise enthält bereits passende Mappings für typische Nginx-Logfelder.
Bei der Arbeit mit Index Context gibt es einige wichtige Punkte zu beachten:
Der Context wird bei der Indexerstellung festgelegt und kann danach nicht mehr geändert werden. Die Wahl des richtigen Kontexts zu Beginn ist daher entscheidend.
Wenn wir einen Context verwenden, können wir bestimmte vom Context verwaltete Einstellungen nicht mehr manuell überschreiben. Dies stellt die Konsistenz der Optimierungen sicher.
Es ist ratsam, die vom Context vorgenommenen Einstellungen zu
verstehen. Ein Blick in die Component Templates mit
GET /_component_template gibt uns Einblick in die
Details.
Lassen Sie uns einige typische Szenarien betrachten, in denen Index Context besonders nützlich ist:
Ein Unternehmen betreibt verschiedene Anwendungen und möchte deren Logs effizient speichern:
PUT _index_template/app-logs
{
"context": {
"name": "logs"
},
"index_patterns": ["app-*-logs"],
"template": {
"settings": {
"number_of_replicas": 1
}
}
}
Für das Monitoring von Cloud-Ressourcen eignet sich der metrics-Context:
PUT /cloud-metrics
{
"context": {
"name": "metrics"
}
}
Da Index Context noch experimentell ist, sollten wir seine Entwicklung aufmerksam verfolgen. Die OpenSearch-Community arbeitet kontinuierlich an Verbesserungen und neuen Kontexten. Über das OpenSearch Forum können wir uns an der Diskussion beteiligen und Feedback geben.
Für Produktivumgebungen empfiehlt sich derzeit noch Vorsicht beim Einsatz dieser Funktion. Es ist ratsam, sie zunächst in einer Testumgebung zu evaluieren und ihre Entwicklung zu beobachten.