Eines der einzigartigen Designmerkmale von Elasticsearch besteht darin, dass im Gegensatz zu den meisten herkömmlichen Systemen oder Datenbanken alle Aufgaben wie die Verbindung zu und die Bearbeitung von Elasticsearch über eine REST API
ausgeführt werden , was bedeutet, dass fast jede Abfrage oder jeder Befehl, der auf Ihrem Elasticsearch-Knoten ausgeführt wird, eine einfache HTTP-Anforderung an eine bestimmte URL ist.
Abhängig vom HTTP verb
gesendet und die URL, an die es gesendet wird, kann Elasticsearch eine Vielzahl von Aktionen auf dem Knoten oder sogar dem Cluster ausführen.
Die Elasticsearch-REST-API-URL-Struktur
Auf der einfachsten Ebene müssen Sie zum Ausführen eines Befehls in Elasticsearch ein HTTP-Verb an die URL Ihres Elasticsearch-Knotens senden. Für die Entwicklung ist dies normalerweise localhost:9200
.
In den meisten Fällen ist die einfachste Methode zum Senden einer Anfrage an die REST-API von Elasticsearch das nützliche Befehlszeilentool cURL
, ein einfaches Tool zum Übertragen nahezu aller Arten von Internetdaten.
Zum Beispiel, um alle indices
aufzulisten , können Sie den folgenden curl
ausführen Befehl an der Shell-Eingabeaufforderung Ihres Entwicklungsservers (wie in der offiziellen Dokumentation angegeben:
$ curl 'localhost:9200/_cat/indices?v'
health index pri rep docs.count docs.deleted bookstore.size pri.bookstore.size
Hier greifen wir auf die cat API
zu (erkennbar am führenden _
Unterstrich) und Anzeigen der indices
, das einen Querschnitt durch jeden Index im Cluster zeigt.
Indizes, Typen, Dokumente und Eigenschaften
Anhand eines Beispiels können wir die spezifische Struktur von Elasticsearch-REST-APIs genauer untersuchen, die meistens aus drei strukturierten Komponenten bestehen, dem index
, der type
, und das document
:
localhost:9200/index/type/document
Der index
ist die übergeordnete Struktur und wird am einfachsten als database
betrachtet das viele types
beherbergt . Und index
kann ein beliebiges Konzept darstellen, repräsentiert aber häufig ein ganzes System von Komponenten, wie z. B. einen shop
oder eine bookstore
.
Types
sind in einem index
enthalten und ähneln Datenbank-tables
, mit jedem type
eine Sammlung ähnlicher Objekte darstellt (wie shirt
oder book
).
Schließlich das document
ist eine einzelne Instanz oder Darstellung eines Objekts des übergeordneten type
. Somit kann das Buch „Der Hobbit“ als Buch existieren type
im index
mit dem Namen Buchhandlung .
Löschen von Daten aus Elasticsearch
Wenn die grundlegende REST-API-Syntax aus dem Weg geräumt ist, können wir untersuchen, wie bestimmte Aktionen wie das Löschen von Daten ausgeführt werden.
Ein einzelnes Dokument löschen
Wenn wir unsere grundlegende Syntax wie oben gesehen verwenden, müssen wir curl
verwenden und senden Sie den DELETE
HTTP-Verb mit -XDELETE
Möglichkeit:
$ curl -XDELETE 'localhost:9200/index/type/document'
Zum Beispiel, um unser oben erwähntes Buch document
zu löschen , könnten wir den folgenden Befehl verwenden:
$ curl -XDELETE 'localhost:9200/bookstore/book/1'
Dadurch wird das document
gelöscht mit einer ID
von 1
aus dem book
type
das ist im bookstore
index
.
Einen Typ löschen
Wie Sie sich vorstellen können, können wir mit der nur geringfügig erweiterten Syntax einen ganzen type
entfernen . Hier löschen wir das book
type
:
$ curl -XDELETE 'localhost:9200/bookstore/book'
Einen Index löschen
Zuletzt, wenn wir einen gesamten index
löschen möchten , kann dies mit der gleichen Syntax wie zuvor erfolgen:
$ curl -XDELETE 'localhost:9200/bookstore'