Der ultimative Leitfaden zur Verwaltung von Elasticsearch-Indizes über API-Befehle
Elasticsearch ist eine leistungsstarke, verteilte Such- und Analyse-Engine, die Daten in Indizes organisiert. Ein Index ist im Wesentlichen ein logischer Namensraum, der auf einen oder mehrere physische Shards verweist, in denen Ihre Dokumente gespeichert sind. Die effektive Verwaltung dieser Indizes ist grundlegend für die Aufrechterhaltung eines gesunden, performanten und skalierbaren Elasticsearch-Clusters. Dieser Leitfaden führt Sie durch die wesentlichen API-Befehle für die Indexlebenszyklusverwaltung, mit denen Sie Indizes sicher erstellen, inspizieren und löschen können.
Eine effiziente Indexverwaltung ist aus mehreren Gründen von entscheidender Bedeutung: Sie ermöglicht es Ihnen zu definieren, wie Ihre Daten gespeichert und durchsucht werden, die Leistung durch Konfiguration von Einstellungen wie Shards und Replikaten zu optimieren und den Speicherplatz zu verwalten, indem veraltete oder unnötige Daten entfernt werden. Die Beherrschung dieser Befehle ist eine Schlüsselqualifikation für jeden Elasticsearch-Administrator oder -Entwickler, um sicherzustellen, dass Ihre Dateninfrastruktur robust und agil bleibt.
Verständnis von Elasticsearch-Indizes
Bevor wir uns mit den API-Befehlen befassen, ist es wichtig zu verstehen, was ein Elasticsearch-Index ist. Vereinfacht ausgedrückt, ist ein Index wie eine Datenbank in einem relationalen Datenbankverwaltungssystem. Er ist eine Sammlung von Dokumenten mit ähnlichen Merkmalen und oft einem gemeinsamen Zweck. Jedes Dokument innerhalb eines Index hat einen Typ (obwohl in neueren Elasticsearch-Versionen ein einzelner Index typischerweise einen einzelnen Typ darstellt, oft _doc) und eine eindeutige ID. Indizes bestehen aus einem oder mehreren Shards, bei denen es sich um in sich geschlossene, niedrigstufige Lucene-Indizes handelt. Diese Shards können über mehrere Knoten verteilt werden, was Skalierbarkeit und Fehlertoleranz bietet.
Zu den Schlüsselkomponenten eines Index gehören:
* Mappings (Abbildungen): Definieren das Schema für die Dokumente innerhalb eines Index und geben Feldnamen, Datentypen (z. B. text, keyword, date, integer) und deren Indizierungsweise an.
* Settings (Einstellungen): Konfigurieren verschiedene betriebliche Aspekte wie die Anzahl der primären Shards, der Replikats-Shards, der Aktualisierungsintervalle und der Analyse-Einstellungen.
* Aliases (Aliase): Virtuelle Namen, die auf einen oder mehrere Indizes verweisen können und Anwendungen Flexibilität bei der Interaktion mit Indizes bieten, ohne deren tatsächliche Namen kennen zu müssen.
Erstellen von Elasticsearch-Indizes
Das Erstellen eines Index ist der erste Schritt zum Speichern von Daten in Elasticsearch. Sie können einen Index mit Standardeinstellungen erstellen oder, was häufiger vorkommt, benutzerdefinierte Mappings und Einstellungen definieren, die auf Ihre Daten- und Suchanforderungen zugeschnitten sind. Die PUT-Methode wird für diesen Zweck verwendet.
Einfache Indexerstellung
Um einen Index mit Standardeinstellungen zu erstellen, senden Sie einfach eine PUT-Anfrage an den gewünschten Indexnamen.
PUT /my_first_index
Nach erfolgreicher Erstellung gibt Elasticsearch eine Bestätigung zurück:
{
"acknowledged": true,
"shards_acknowledged": true,
"index": "my_first_index"
}
Dadurch wird standardmäßig ein Index mit einem primären Shard und einem Replikats-Shard erstellt, und das dynamische Mapping ist aktiviert (d. h. Elasticsearch leitet die Feldtypen ab, während Dokumente indiziert werden).
Erstellen von Indizes mit benutzerdefinierten Mappings und Einstellungen
Für mehr Kontrolle können Sie explizite Mappings für Ihre Felder definieren und Indexeinstellungen wie die Anzahl der Shards und Replikate festlegen. Dies ist entscheidend für die Optimierung der Suchleistung und die Gewährleistung der Datenintegrität.
Beispiel: Benutzerdefinierte Mappings und Einstellungen
Erstellen wir einen Index namens products mit spezifischen Feldtypen für Produktdaten und konfigurieren ihn mit 3 primären Shards und 2 Replikats-Shards.
PUT /products
{
"settings": {
"number_of_shards": 3,
"number_of_replicas": 2
},
"mappings": {
"properties": {
"product_id": {
"type": "keyword"
},
"name": {
"type": "text",
"fields": {
"raw": {
"type": "keyword"
}
}
},
"description": {
"type": "text"
},
"price": {
"type": "float"
},
"stock": {
"type": "integer"
},
"created_at": {
"type": "date",
"format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd"
},
"available": {
"type": "boolean"
}
}
}
}
settings: Definiert Cluster-weite Konfigurationen für den Index. Hier legen wirnumber_of_shardsundnumber_of_replicasfest.mappings: Enthält die Schema-Definition. Wir definierenpropertiesfür jedes Feld:product_id: Typkeywordfür exakte Übereinstimmung.name: Typtextfür Volltextsuche, mit einem zusätzlichenkeyword-Unterfeld (name.raw) für exaktes Sortieren oder Aggregationen.description: Typtextfür Volltextsuche.price: Typfloatfür numerische Operationen.stock: Typintegerfür numerische Operationen.created_at: Typdatemit angegebenen Formaten, um eine korrekte Analyse sicherzustellen.available: Typbooleanfür Wahr/Falsch-Werte.
Tipp: Planen Sie Ihre Mappings sorgfältig. Sobald ein Index erstellt und gefüllt ist, ist das Ändern des Datentyps eines vorhandenen Feldes ohne Neuindizierung Ihrer Daten nicht direkt möglich. Planen Sie Ihre Datentypen und Analyseanforderungen im Voraus.
Anzeigen von Indexdetails und -einstellungen
Nach der Erstellung eines Index müssen Sie häufig dessen Konfiguration überprüfen, um Einstellungen zu bestätigen, Mappings zu verifizieren oder Probleme zu beheben. Der GET-Befehl ist Ihr primäres Werkzeug zum Abrufen umfassender Informationen über einen Index.
Abrufen aller Indexinformationen
Um alle Einstellungen, Mappings, Aliase und andere Metadaten für einen bestimmten Index abzurufen, verwenden Sie den GET-Befehl mit dem Indexnamen.
GET /products
Dies gibt ein großes JSON-Objekt mit detaillierten Informationen zurück, darunter:
{
"products": {
"aliases": {},
"mappings": {
"properties": {
"available": {
"type": "boolean"
},
"created_at": {
"type": "date",
"format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd"
},
"description": {
"type": "text"
},
"name": {
"type": "text",
"fields": {
"raw": {
"type": "keyword"
}
}
},
"price": {
"type": "float"
},
"product_id": {
"type": "keyword"
},
"stock": {
"type": "integer"
}
}
},
"settings": {
"index": {
"routing": {
"allocation": {
"include": {
"_tier_preference": "data_content"
}
}
},
"number_of_shards": "3",
"provided_name": "products",
"creation_date": "1701234567890",
"number_of_replicas": "2",
"uuid": "some_uuid",
"version": {
"created": "7170099"
}
}
}
}
}
Abrufen spezifischer Indexinformationen
Sie können nur bestimmte Teile der Konfiguration eines Index abrufen, indem Sie diese an die URL anhängen.
-
Nur Mappings abrufen:
bash GET /products/_mapping -
Nur Einstellungen abrufen:
bash GET /products/_settings -
Nur Aliase abrufen:
bash GET /products/_alias
Diese fokussierte Abfrage ist nützlich, wenn Sie nur an einem bestimmten Aspekt eines Index interessiert sind, wodurch die Ausgabe übersichtlicher wird.
Anzeigen mehrerer Indizes
Sie können auch Informationen für mehrere Indizes abrufen, indem Sie deren Namen durch Kommas trennen oder Wildcards verwenden.
-
Spezifische mehrere Indizes:
bash GET /products,my_first_index/_settings -
Alle Indizes, die mit 'p' beginnen:
bash GET /p*/_mapping -
Alle Indizes (mit Vorsicht in Produktionsumgebungen verwenden):
bash GET /_all # oder GET /*
Hinweis: Wenn Sie
GET /_alloderGET /*verwenden, seien Sie auf eine potenziell sehr große Antwort vorbereitet, wenn Ihr Cluster viele Indizes hat. Verwenden Sie dies sparsam, insbesondere in Produktionsumgebungen.
Löschen von Elasticsearch-Indizes
Das Löschen eines Index ist ein permanenter Vorgang, der alle damit verbundenen Dokumente und Metadaten entfernt. Dies geschieht typischerweise, um Speicherplatz freizugeben, alte Daten zu entfernen oder Testindizes zu bereinigen. Die DELETE-Methode wird für diesen kritischen Vorgang verwendet.
Löschen eines einzelnen Index
Um einen einzelnen Index zu löschen, verwenden Sie den DELETE-Befehl gefolgt vom Indexnamen.
DELETE /my_first_index
Eine erfolgreiche Löschung gibt zurück:
{
"acknowledged": true
}
Warnung: Diese Aktion ist nicht umkehrbar. Sobald ein Index gelöscht wurde, sind seine Daten für immer verloren, es sei denn, Sie haben ein Snapshot oder ein Backup. Überprüfen Sie immer den Indexnamen, bevor Sie einen
DELETE-Befehl ausführen, insbesondere in Produktionsumgebungen.
Löschen mehrerer Indizes
Ähnlich wie bei GET können Sie mehrere Indizes löschen, indem Sie diese in einer durch Kommas getrennten Liste angeben oder Wildcards verwenden.
-
Löschen spezifischer mehrerer Indizes:
bash DELETE /my_old_index_1,my_old_index_2 -
Löschen aller Indizes, die einem Muster entsprechen:
bash DELETE /logstash-2023-*
Dieser Befehl würde alle Indizes löschen, deren Namen mitlogstash-2023-beginnen. -
Löschen aller Indizes (äußerste Vorsicht!):
bash DELETE /_all # oder DELETE /*Gefahr! Das Löschen von
_alloder*entfernt jeden einzelnen Index aus Ihrem Cluster. Dies ist ein extrem destruktiver Vorgang und sollte niemals in einer Produktionsumgebung ausgeführt werden, es sei denn, Sie beabsichtigen ausdrücklich, Ihren gesamten Cluster zu leeren, und verfügen über einen robusten Wiederherstellungsplan. Viele Produktionscluster deaktivieren diese Funktionalität, um versehentlichen Datenverlust zu verhindern.
Best Practices für das Löschen
- Immer überprüfen: Überprüfen Sie vor dem Löschen den Index (oder die Indizes über Wildcard), den Sie löschen möchten, mit
GET. Dies bestätigt, dass Sie auf die richtigen Daten abzielen.
bash GET /logstash-2023-*
Überprüfen Sie die Ausgabe, und wenn sie Ihren Erwartungen entspricht, fahren Sie mitDELETEfort. - Berechtigungen: Stellen Sie sicher, dass der Benutzer oder die Rolle, die den
DELETE-Befehl ausführt, über die erforderlichen Berechtigungen verfügt. In einer Produktionsumgebung solltenDELETE-Berechtigungen nur autorisiertem Personal vorbehalten sein. - Snapshots: Erstellen Sie immer einen Snapshot Ihres Clusters, bevor Sie großflächige Löschungen durchführen, insbesondere wenn die Daten kritisch sind.
Vergleich und Lebenszyklusverwaltung
Diese drei Befehle (PUT zum Erstellen, GET zur Inspektion, DELETE zum Entfernen) bilden das Rückgrat der manuellen Indexlebenszyklusverwaltung. Sie werden in verschiedenen Phasen verwendet:
- Erstellung (
PUT): Zu Beginn des Lebenszyklus eines Index, Definition seiner Struktur und anfänglichen Konfiguration. - Inspektion (
GET): Während des aktiven Lebenszyklus eines Index zur Überwachung, Fehlerbehebung und Verifizierung. - Löschung (
DELETE): Am Ende der Nutzungsdauer eines Index, um Ressourcen freizugeben und Datenaufbewahrungsrichtlinien zu verwalten.
Obwohl diese Befehle hervorragend für Ad-hoc- oder programmatische Verwaltung geeignet sind, bietet Elasticsearch auch leistungsstarke Funktionen für die automatisierte Indexlebenszyklusverwaltung (ILM). ILM-Richtlinien ermöglichen es Ihnen, Regeln zu definieren, um Indizes automatisch durch Phasen (Hot, Warm, Cold, Delete) zu verschieben, basierend auf Alter, Größe oder anderen Kriterien, einschließlich Operationen wie Shrinking, Force Merging und schließlich Löschen. Für die groß angelegte oder langfristige Datenaufbewahrung ist ILM der empfohlene Ansatz zur Automatisierung der DELETE-Phase.
Fazit
Die Verwaltung von Elasticsearch-Indizes über API-Befehle ist eine unverzichtbare Fähigkeit für alle, die mit der Plattform arbeiten. Sie haben gelernt, wie man Indizes mit präzisen Mappings und Einstellungen unter Verwendung von PUT erstellt, deren Konfigurationen gründlich mit GET überprüft und sie sicher mit DELETE entfernt. Durch das Verständnis und die korrekte Anwendung dieser Befehle erhalten Sie eine granulare Kontrolle über Ihre Datenspeicherung und können sicherstellen, dass Ihr Elasticsearch-Cluster effizient, gut organisiert und performant bleibt.
Denken Sie immer an die Bedeutung einer sorgfältigen Planung der Mappings, einer gewissenhaften Überprüfung vor dem Löschen und der Nutzung der integrierten Elasticsearch-Funktionen wie ILM für eine fortgeschrittene, automatisierte Lebenszyklusverwaltung. Mit diesen Tools und Best Practices sind Sie gut gerüstet, um die Elasticsearch-Indexadministration zu meistern. Für weitere Erkundungen tauchen Sie ein in erweiterte Mapping-Optionen, Indexvorlagen und die volle Leistungsfähigkeit der Indexlebenszyklusverwaltungsrichtlinien von Elasticsearch.