Elasticsearch Multi-get

Elasticsearch Multi-get

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:

  1. - Navnet på indeksen for å hente dokumentene som spesifisert av deres IDS.

Du kan også spesifisere de andre spørringsparametrene som vist:

  1. Preferanse - Definerer den foretrukne noden eller skjæret.
  2. Sanntid - Hvis den er satt til sann, utføres operasjonen i sanntid.
  3. Forfriske - Tvinger operasjonen til å oppdatere målskårene før du henter de spesifiserte dokumentene.
  4. Ruting - En verdi som brukes til å rute operasjonene til en bestemt skjær.
  5. Store_fields - Henter dokumentfeltene som er lagret i en indeks i stedet for dokumentet.
  6. _kilde - En boolsk verdi som definerer om forespørselen skal returnere _ kildekilde eller ikke.

Spørringen krever kroppen, som inkluderer følgende verdier:

  1. 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.
  2. 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!