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'