Tutorial: Dokumente in Amazon OpenSearch Service erstellen und danach suchen - OpenSearch Amazon-Dienst

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Tutorial: Dokumente in Amazon OpenSearch Service erstellen und danach suchen

In diesem Tutorial erfahren Sie, wie Sie ein Dokument in Amazon OpenSearch Service erstellen und danach suchen. Sie fügen einem Index Daten in Form eines JSON-Dokuments hinzu. OpenSearch Der Dienst erstellt einen Index rund um das erste Dokument, das Sie hinzufügen.

In diesem Tutorial wird erläutert, wie Sie HTTP-Anforderungen zum Erstellen von Dokumenten stellen, automatisch eine ID für ein Dokument generieren und grundlegende und erweiterte Suchvorgänge für Ihre Dokumente durchführen.

Anmerkung

Dieses Tutorial verwendet eine Domain mit offenem Zugriff. Für ein Höchstmaß an Sicherheit empfehlen wir, Ihre Domain in eine Virtual Private Cloud (VPC) zu legen.

Voraussetzungen

Für dieses Tutorial müssen die folgenden Voraussetzungen erfüllt sein:

  • Sie benötigen ein AWS-Konto.

  • Sie müssen über eine aktive OpenSearch Dienstdomäne verfügen.

Hinzufügen eines Dokuments zu einem Index

Um ein Dokument zu einem Index hinzuzufügen, können Sie ein beliebiges HTTP-Tool wie Postman, cURL oder die OpenSearch Dashboards-Konsole verwenden. Bei diesen Beispielen wird davon ausgegangen, dass Sie die Entwicklerkonsole in Dashboards verwenden. OpenSearch Wenn Sie ein anderes Tool verwenden, passen Sie es entsprechend an, indem Sie bei Bedarf die vollständige URL und Anmeldeinformationen angeben.

Fügen Sie ein Dokument wie folgt einem Index hinzu

  1. Navigieren Sie zur OpenSearch Dashboard-URL für Ihre Domain. Sie finden die URL im Dashboard der Domain in der OpenSearch Servicekonsole. Die URL weist das folgende Format auf:

    domain-endpoint/_dashboards/
  2. Melden Sie sich mit Ihrem primären Benutzernamen und Passwort an.

  3. Öffnen Sie den linken Navigationsbereich und wählen Sie Dev Tools (Entwickler-Tools) aus.

  4. Das HTTP-Verb zum Erstellen einer neuen Ressource ist PUT, das Sie zum Erstellen eines neuen Dokuments und Indexes verwenden. Geben Sie in der Konsole den folgenden Befehl ein:

    PUT fruit/_doc/1 { "name":"strawberry", "color":"red" }

    Die PUT-Anforderung erstellt einen Index namens fruit und erstellt ein einzelnes Dokument gemäß des Indexes mit der ID 1. Sie erzeugt folgende Antwort:

    { "_index" : "fruit", "_type" : "_doc", "_id" : "1", "_version" : 1, "result" : "created", "_shards" : { "total" : 2, "successful" : 2, "failed" : 0 }, "_seq_no" : 0, "_primary_term" : 1 }

Erstellen automatisch generierter IDs

OpenSearch Der Service kann automatisch eine ID für Ihre Dokumente generieren. Der Befehl zum Generieren von IDs verwendet eine POST-Anforderung anstelle einer PUT-Anforderung und erfordert keine Dokument-ID (im Vergleich zur vorherigen Anforderung).

Geben Sie die folgende Anforderung in der Entwicklerkonsole ein:

POST veggies/_doc { "name":"beet", "color":"red", "classification":"root" }

Diese Anfrage erstellt einen Index mit dem Namen veggies und fügt das Dokument dem Index hinzu. Sie erzeugt folgende Antwort:

{ "_index" : "veggies", "_type" : "_doc", "_id" : "3WgyS4IB5DLqbRIvLxtF", "_version" : 1, "result" : "created", "_shards" : { "total" : 2, "successful" : 2, "failed" : 0 }, "_seq_no" : 0, "_primary_term" : 1 }

Beachten Sie das zusätzliche Feld _id in der Antwort, das anzeigt, dass automatisch eine ID erstellt wurde.

Anmerkung

Nach _doc geben Sie nichts mehr in der URL an, wo normalerweise die ID steht. Da Sie ein Dokument mit einer generierten ID erstellen, geben Sie noch keine an. Diese ist für Updates reserviert.

Aktualisieren eines Dokuments mit einem POST-Befehl

Um ein Dokument zu aktualisieren, verwenden Sie einen HTTP-POST-Befehl mit der ID-Nummer.

Erstellen Sie zunächst ein Dokument mit der ID 42:

POST fruits/_doc/42 { "name":"banana", "color":"yellow" }

Verwenden Sie dann diese ID, um das Dokument zu aktualisieren:

POST fruits/_doc/42 { "name":"banana", "color":"yellow", "classification":"berries" }

Dieser Befehl aktualisiert das Dokument mit dem neuen Feld classification. Sie erzeugt folgende Antwort:

{ "_index" : "fruits", "_type" : "_doc", "_id" : "42", "_version" : 2, "result" : "updated", "_shards" : { "total" : 2, "successful" : 2, "failed" : 0 }, "_seq_no" : 1, "_primary_term" : 1 }
Anmerkung

Wenn Sie versuchen, ein Dokument zu aktualisieren, das nicht existiert, erstellt OpenSearch Service das Dokument.

Ausführen von Massenaktionen

Sie können die API-Operation POST _bulk zum Ausführen mehrerer Aktionen für einen oder mehrere Indizes in einer Anforderung verwenden. Befehle für Massenaktionen haben folgendes Format:

POST /_bulk <action_meta>\n <action_data>\n <action_meta>\n <action_data>\n

Jede Aktion erfordert zwei JSON-Zeilen. Zuerst geben Sie die Beschreibung der Aktion oder Metadaten an. In der nächsten Zeile geben Sie die Daten ein. Jeder Teil wird durch einen Zeilenumbruch (\n) getrennt. Eine Aktionsbeschreibung für eine Einfügung kann wie folgt aussehen:

{ "create" : { "_index" : "veggies", "_type" : "_doc", "_id" : "7" } }

Und die nächste Zeile mit den Daten könnte folgendermaßen aussehen:

{ "name":"kale", "color":"green", "classification":"leafy-green" }

Zusammengenommen stellen die Metadaten und die Daten eine einzelne Aktion in einem Massenvorgang dar. Sie können wie folgt viele Operationen in einer Anfrage ausführen:

POST /_bulk { "create" : { "_index" : "veggies", "_id" : "35" } } { "name":"kale", "color":"green", "classification":"leafy-green" } { "create" : { "_index" : "veggies", "_id" : "36" } } { "name":"spinach", "color":"green", "classification":"leafy-green" } { "create" : { "_index" : "veggies", "_id" : "37" } } { "name":"arugula", "color":"green", "classification":"leafy-green" } { "create" : { "_index" : "veggies", "_id" : "38" } } { "name":"endive", "color":"green", "classification":"leafy-green" } { "create" : { "_index" : "veggies", "_id" : "39" } } { "name":"lettuce", "color":"green", "classification":"leafy-green" } { "delete" : { "_index" : "vegetables", "_id" : "1" } }

Beachten Sie, dass die letzte Aktion vom Typ delete ist. Es gibt keine Daten nach der delete-Aktion.

Jetzt, da Daten in Ihrem Cluster vorhanden sind, können Sie danach suchen. Sie können beispielsweise nach allen Wurzelgemüsen suchen oder eine Anzahl aller Blattgemüse ermitteln oder die Anzahl der pro Stunde protokollierten Fehler ermitteln.

Einfache Suchen

Eine einfache Suche sieht etwa folgendermaßen aus:

GET veggies/_search?q=name:l*

Die Anfrage erzeugt eine JSON-Antwort, die das Dokument zu Salaten enthält.

Erweiterte Suchen

Sie können erweiterte Suchvorgänge durchführen, indem Sie die Abfrageoptionen als JSON im Anfragetext angeben:

GET veggies/_search { "query": { "term": { "name": "lettuce" } } }

Dieses Beispiel erzeugt auch eine JSON-Antwort mit dem Dokument zu Salaten.

Sortieren

Sie können mehrere dieser Art von Abfragen mithilfe der Sortierung ausführen. Zuerst müssen Sie den Index neu erstellen, da bei der automatischen Feldzuordnung Typen ausgewählt wurden, die standardmäßig nicht sortiert werden können. Senden Sie die folgenden Anfragen, um den Index zu löschen und neu zu erstellen:

DELETE /veggies PUT /veggies { "mappings":{ "properties":{ "name":{ "type":"keyword" }, "color":{ "type":"keyword" }, "classification":{ "type":"keyword" } } } }

Füllen Sie dann den Index erneut mit Daten:

POST /_bulk { "create" : { "_index" : "veggies", "_id" : "7" } } { "name":"kale", "color":"green", "classification":"leafy-green" } { "create" : { "_index" : "veggies", "_id" : "8" } } { "name":"spinach", "color":"green", "classification":"leafy-green" } { "create" : { "_index" : "veggies", "_id" : "9" } } { "name":"arugula", "color":"green", "classification":"leafy-green" } { "create" : { "_index" : "veggies", "_id" : "10" } } { "name":"endive", "color":"green", "classification":"leafy-green" } { "create" : { "_index" : "veggies", "_id" : "11" } } { "name":"lettuce", "color":"green", "classification":"leafy-green" }

Jetzt können Sie mit einer Sortierung suchen. Diese Anforderung fügt eine aufsteigende Sortierung nach der Klassifizierung hinzu:

GET veggies/_search { "query" : { "term": { "color": "green" } }, "sort" : [ "classification" ] }

Zugehörige Ressourcen

Weitere Informationen finden Sie in den folgenden Ressourcen: