In diesem Artikel wird darüber erörtert. Darüber hinaus können Sie mit Elasticsearch eine einzelne GET -Abfrage verwenden, um die Dokumente nur mit den Dokument -IDs aus Indizes abzurufen.
Lass uns erforschen.
Syntax anfordern
Das Folgende ist die Syntax für die Elasticsearch Multi-Get-API:
Get /_mget
Get // _ mget
Die Multi-Hand-API unterstützt mehrere Indizes, mit denen Sie die Dokumente abrufen können, auch wenn sie sich nicht im selben Index befinden.
Die Anforderung unterstützt die folgenden Pfadparameter:
- - Der Name des Index, aus dem die Dokumente abgerufen werden können, wie in ihren IDs angegeben.
Sie können auch die anderen Abfrageparameter wie gezeigt angeben:
- Präferenz - Definiert den bevorzugten Knoten oder Shard.
- Echtzeit - Wenn auf True gesetzt, wird die Operation in Echtzeit durchgeführt.
- Aktualisierung - Erzwingt die Operation, die Zielschards zu aktualisieren, bevor sie die angegebenen Dokumente abrufen.
- Routing - Ein Wert, der verwendet wird, um die Operationen an einen bestimmten Shard zu leiten.
- Store_fields - Ruft die Dokumentfelder ab, die eher in einem Index als in dem Dokument gespeichert sind.
- _Quelle - Ein boolescher Wert, der definiert, ob die Anforderung das Feld _Source zurückgeben sollte oder nicht.
Die Abfrage erfordert den Körper, der die folgenden Werte enthält:
- Dokumente - Gibt die Dokumente an, die Sie holen möchten. Darüber hinaus unterstützt dieser Abschnitt die folgenden Attribute:
- _Ausweis - Eindeutige ID des Zieldokuments.
- _Index - Der Index, der das Zieldokument enthält.
- Routing - Der Schlüssel für den primären Shard des Dokuments.
- _Quelle - Wenn wahr, enthält es alle Quellfelder; Ansonsten schließt es sie aus.
- _Stored_fields - Die gespeicherten Fields, die Sie einschließen möchten.
- IDS - Die IDs der Dokumente, die Sie holen möchten.
Beispiel 1: Holen Sie sich mehrere Dokumente aus demselben Index
Das folgende Beispiel zeigt, wie die Elasticsearch-Multi-Get-API verwendet wird, um die Dokumente mit bestimmten IDs aus dem Netflix-Index abzurufen:
curl -xget "http: // localhost: 9200/netflix/_mget" -h "kbn-xsrf: meldeing" -h "content -type: application/json" -d '
"Dokumente": [
"_id": "t3wnvombck2aezxpytlj"
,
"_id": "w3wnvombck2aezxpytlj"
]
'
Die angegebene Anfrage sollte die Dokumente mit den angegebenen IDs aus dem Netflix -Index abrufen. Die resultierende Ausgabe ist wie gezeigt:
"Dokumente": [
"_index": "netflix",
"_id": "t3wnvombck2aezxpytlj",
"_Version 1,
"_seq_no": 0,
"_primary_term": 1,
"gefunden": wahr,
"_Quelle":
"Dauer": "90 min",
"Listed_in": "Dokumentarfilme",
"Land: Vereinigte Staaten",
"Date_Added": "25. September 2021",
"show_id": "s1",
"Direktor": "Kirsten Johnson",
"Release_year": 2020,
"Bewertung": "PG-13",
"Beschreibung": "Als ihr Vater sich dem Ende seines Lebens nähert.",
"Typ": "Film",
"Titel": "Dick Johnson ist tot"
,
"_index": "netflix",
"_id": "w3wnvombck2aezxpytlj",
"_Version 1,
"_seq_no": 12,
"_primary_term": 1,
"gefunden": wahr,
"_Quelle":
"Land": "Deutschland, Tschechische Republik",
"show_id": "s13",
"Direktor": "Christian Schwochow",
"Release_year": 2021,
"Bewertung": "tv-ma",
"Beschreibung": "Nachdem der größte Teil ihrer Familie bei einem Terroristenbomben ermordet wurde, wird eine junge Frau unwissentlich dazu gelockt, sich der Gruppe anzuschließen, die sie getötet hat.",
"Typ": "Film",
"Titel": "JE Suis Karl",
"Dauer": "127 min",
"Listed_in": "Dramen, internationale Filme",
"Cast": "Luna Wedler, Jannis Niewöhner, Mailand Peschel, Edin Hasanović, Anna Fialová, Marlon Boess, Victor Boccard, Fleur Geffrier, Aziz Dyab, Mélanie Fouché, Elizaveta Maximová",
"Date_Added": "23. September 2021"
]
Wir können die Anfrage auch vereinfachen, indem wir die Dokument -IDs in ein einfaches Array einfügen, wie im Folgenden gezeigt:
curl -xget "http: // localhost: 9200/netflix/_mget" -h "kbn-xsrf: meldeing" -h "content -type: application/json" -d '
"IDS": ["T3WNVOMBCK2AEZXPYTLJ", "W3WNVOMBCK2AEZXPYTLJ"]
'
Die vorherige Anfrage sollte eine ähnliche Aktion ausführen.
Beispiel 2: Holen Sie sich die Dokumente aus mehreren Anzeigen
Im folgenden Beispiel holt die Anforderung mehrere Dokumente aus verschiedenen Indizes ab, wie gezeigt:
curl -xget "http: // localhost: 9200/_mget" -h "kbn -xsrf: meldung" -h "content -type: application/json" -d '
"Dokumente": [
"_index": "netflix",
"_id": "t3wnvombck2aezxpytlj"
,
"_index": "Disney",
"_id": "8J4WWOMB1YF5VQFAKCE4"
]
'
Die resultierende Ausgabe ist wie gezeigt:
Beispiel 3: bestimmte Felder ausschließen
Wir können bestimmte Felder aus einer bestimmten Anforderung mit den Parametern von Source_include und Source_Exclude ausschließen.
Ein Beispiel ist wie gezeigt:
curl -xget "http: // localhost: 9200/_mget" -h "kbn -xsrf: meldung" -h "content -type: application/json" -d '
"Dokumente": [
"_index": "netflix",
"_id": "t3wnvombck2aezxpytlj",
"_Source": Falsch
,
"_index": "netflix",
"_id": "t3wnvombck2aezxpytlj",
"_Quelle":
"Include": ["Listed_in", "Release_year", "Titel"],
"ausschließen": ["Beschreibung", "Typ", "Date_Added"]
]
'
Die angegebene Anfrage verwendet die Quelle, die in der Quelle enthalten ist und ausschließt, um anzugeben, welche Felder Sie in einem bestimmten Dokument abrufen möchten.
Die resultierende Ausgabe ist wie gezeigt:
Abschluss
In diesem Beitrag haben wir die Grundlagen der Arbeit mit Elasticsearch Multi-Get-API erörtert, mit denen Sie mehrere Dokumente aus verschiedenen Quellen basierend auf ihren IDs abrufen können. Weitere Informationen finden Sie in den anderen Dokumenten, um weitere Informationen zu erhalten.
Glückliche Codierung!