Denne artikkelen vil diskutere hvordan du bruker Elasticsearch Multi-get API for å hente flere JSON-dokumenter basert på ID-ene. I tillegg lar Elasticsearch deg bruke en enkelt get -spørring for å hente dokumentene fra indekser som bare bruker dokument -ID -ene.
La oss utforske.
Be om syntaks
Følgende er syntaks for Elasticsearch Multi-get API:
Få /_mget
Få // _ mget
Multi-get API støtter flere indekser som lar deg hente dokumentene selv om de ikke er i samme indeks.
Forespørselen støtter følgende baneparametere:
- - Navnet på indeksen for å hente dokumentene som spesifisert av deres IDS.
Du kan også spesifisere de andre spørringsparametrene som vist:
- Preferanse - Definerer den foretrukne noden eller skjæret.
- Sanntid - Hvis den er satt til sann, utføres operasjonen i sanntid.
- Forfriske - Tvinger operasjonen til å oppdatere målskårene før du henter de spesifiserte dokumentene.
- Ruting - En verdi som brukes til å rute operasjonene til en bestemt skjær.
- Store_fields - Henter dokumentfeltene som er lagret i en indeks i stedet for dokumentet.
- _kilde - En boolsk verdi som definerer om forespørselen skal returnere _ kildekilde eller ikke.
Spørringen krever kroppen, som inkluderer følgende verdier:
- Dokumenter - Angir dokumentene du ønsker å hente. I tillegg støtter denne delen følgende attributter:
- _id - Unik ID for måldokumentet.
- _index - Indeksen som inneholder måldokumentet.
- Ruting - Nøkkelen for dokumentets primære skarp.
- _kilde - Hvis det er sant, inkluderer det alle kildefelt; Ellers ekskluderer det dem.
- _stored_fields - De lagrede_feltene du ønsker å inkludere.
- Ids - IDene til dokumentene du ønsker å hente.
Eksempel 1: Hent flere dokumenter fra samme indeks
Følgende eksempel viser hvordan du bruker Elasticsearch Multi-get API for å hente dokumentene med spesifikke ID-er fra Netflix-indeksen:
Curl -xget "http: // localhost: 9200/netflix/_mget" -h "kbn -xsrf: rapportering" -h "innholdstype: applikasjon/json" -d '
"Dokumenter": [
"_id": "t3wnvombck2aezxpytlj"
,
"_id": "w3wnvombck2aezxpytlj"
]
'
Den gitte forespørselen skal hente dokumentene med de spesifiserte IDene fra Netflix -indeksen. Den resulterende utgangen er som vist:
"Dokumenter": [
"_index": "Netflix",
"_id": "t3wnvombck2aezxpytlj",
"_versjon": 1,
"_Seq_no": 0,
"_primary_term": 1,
"funnet": sant,
"_Source":
"Varighet": "90 min",
"Listed_in": "Dokumentarer",
"Land": "USA",
"date_added": "25. september 2021",
"Show_id": "S1",
"Regissør": "Kirsten Johnson",
"Release_year": 2020,
"Rating": "PG-13",
"Beskrivelse": "Når faren nærmer seg slutten av livet, iscenesetter filmskaperen Kirsten Johnson sin død på oppfinnsomme og komiske måter å hjelpe dem begge å møte de uunngåelige."",
"Type": "Film",
"Tittel": "Dick Johnson er død"
,
"_index": "Netflix",
"_id": "w3wnvombck2aezxpytlj",
"_versjon": 1,
"_Seq_no": 12,
"_primary_term": 1,
"funnet": sant,
"_Source":
"Land": "Tyskland, Tsjekkia",
"Show_id": "S13",
"Regissør": "Christian Schwochow",
"Release_year": 2021,
"Rating": "TV-Ma",
"Beskrivelse": "Etter at det meste av familien hennes er myrdet i en terrorbombing, blir en ung kvinne ubevisst lokket til å bli med i selve gruppen som drepte dem."",
"Type": "Film",
"Tittel": "Je Suis Karl",
"Varighet": "127 min",
"Listed_in": "Dramas, International Movies",
"Cast": "Luna Wedler, Jannis Niewöhner, Milan Peschel, Edin Hasanović, Anna Fialová, Marlon Boess, Victor Boccard, Fleur Geffrier, Aziz Dyab, Mélanie Fouché, Elizaveta Maximová",
"date_added": "23. september 2021"
]
Vi kan også forenkle forespørselen ved å sette dokument -ID -ene i en enkel matrise som vist på følgende:
Curl -xget "http: // localhost: 9200/netflix/_mget" -h "kbn -xsrf: rapportering" -h "innholdstype: applikasjon/json" -d '
"Ids": ["T3WnVombck2aezxpytlj", "W3WnVombck2aezxpytlj"]
'
Den forrige forespørselen skal utføre en lignende handling.
Eksempel 2: Hent dokumentene fra flere indikier
I det følgende eksempel henter forespørselen flere dokumenter fra forskjellige indekser som vist:
Curl -xget "http: // localhost: 9200/_mget" -h "kbn -xsrf: rapportering" -h "innholdstype: applikasjon/json" -d '
"Dokumenter": [
"_index": "Netflix",
"_id": "t3wnvombck2aezxpytlj"
,
"_index": "Disney",
"_id": "8J4WWOMB1YF5VQFAKCE4"
]
'
Den resulterende utgangen er som vist:
Eksempel 3: Ekskluder spesifikke felt
Vi kan ekskludere spesifikke felt fra en gitt forespørsel ved hjelp av source_include og source_exclude -parametere.
Et eksempel er som vist:
Curl -xget "http: // localhost: 9200/_mget" -h "kbn -xsrf: rapportering" -h "innholdstype: applikasjon/json" -d '
"Dokumenter": [
"_index": "Netflix",
"_id": "t3wnvombck2aezxpytlj",
"_Source": Falsk
,
"_index": "Netflix",
"_id": "t3wnvombck2aezxpytlj",
"_Source":
"Inkluder": ["listed_in", "Release_year", "tittel"],
"Ekskluder": ["Beskrivelse", "type", "date_added"]
]
'
Den gitte forespørselen bruker kilden inkluderer og ekskluderer for å spesifisere hvilke felt du ønsker å hente i et gitt dokument.
Den resulterende utgangen er som vist:
Konklusjon
I dette innlegget diskuterte vi grunnleggende om å jobbe med Elasticsearch Multi-get API som lar deg hente flere dokumenter fra forskjellige kilder basert på ID-ene deres. Utforsk gjerne de andre dokumentene for mer informasjon.
Glad koding!