Elasticsearch Multi-Get

Elasticsearch Multi Get



Selles artiklis käsitletakse seda, kuidas kasutada Elasticsearchi multi-get API-d mitme JSON-dokumendi toomiseks nende ID-de alusel. Lisaks võimaldab Elasticsearch kasutada dokumentide toomiseks indeksitest, kasutades ainult dokumendi ID-sid, kasutada ühte hankimispäringut.

Uurime.







Taotle süntaksit

Järgmine on Elasticsearchi multi-get API süntaks:



GET /_mget
GET / /_mget

Multi-get API toetab mitut indeksit, mis võimaldab teil dokumente tuua isegi siis, kui need pole samas registris.



Taotlus toetab järgmisi tee parameetreid:





  1. – indeksi nimi, millest dokumendid alla laadida vastavalt nende ID-dele.

Saate määrata ka muud päringuparameetrid, nagu näidatud:

  1. Eelistus – Määrab eelistatud sõlme või killu.
  2. Reaalajas – Kui see on seatud tõeseks, tehakse toiming reaalajas.
  3. Värskenda – Sunnib toimingut sihtkillud enne määratud dokumentide toomist värskendama.
  4. Marsruutimine – Väärtus, mida kasutatakse toimingute suunamiseks konkreetsele killule.
  5. Store_fields – Toob välja registrisse salvestatud dokumendiväljad, mitte dokumendi.
  6. _allikas – Boole'i ​​väärtus, mis määrab, kas päring peaks tagastama välja _source või mitte.

Päring nõuab keha, mis sisaldab järgmisi väärtusi:



  1. Dokumendid – Määrab dokumendid, mida soovite tuua. Lisaks toetab see jaotis järgmisi atribuute:
    • _id – sihtdokumendi kordumatu ID.
    • _indeks – sihtdokumenti sisaldav register.
    • Marsruutimine – Dokumendi esmase killu võti.
    • _allikas – Kui tõene, sisaldab see kõiki lähtevälju; vastasel juhul välistab see need.
    • _salvestatud_väljad – Salvestatud_väljad, mida soovite kaasata.
  2. Ids – nende dokumentide ID-d, mida soovite tuua.

Näide 1: tooge samast registrist mitu dokumenti

Järgmine näide näitab, kuidas kasutada Elasticsearchi multi-get API-d konkreetsete ID-dega dokumentide toomiseks Netflixi registrist.

curl -XGET 'http://localhost:9200/netflix/_mget' -H 'kbn-xsrf: aruandlus' -H 'Sisu tüüp: rakendus/json' -d'
{
'dokumendid': [
{
'_id': 'T3wnVoMBck2AezXPytlJ'
},
{
'_id': 'W3wnVoMBck2AezXPytlJ'
}
]
}'

Antud päring peaks tooma määratud ID-dega dokumendid Netflixi registrist. Saadud väljund on järgmine:

{
'dokumendid': [
{
'_index': 'netflix',
'_id': 'T3wnVoMBck2AezXPytlJ',
'_version': 1,
'_seq_no': 0,
'_primary_term': 1,
'leitud': tõsi,
'_allikas': {
'kestvus': '90 min',
'listed_in': 'Dokumentaalfilmid',
'riik': 'Ameerika Ühendriigid',
'date_added': '25. september 2021',
'show_id': 's1',
'režissöör': 'Kirsten Johnson',
'release_year': 2020,
'reiting': 'PG-13',
'kirjeldus': 'Kui tema isa läheneb oma elu lõpule, lavastab filmitegija Kirsten Johnson oma surma leidlikul ja koomilisel viisil, et aidata neil mõlemal paratamatusega silmitsi seista.'
'tüüp': 'Film',
'pealkiri': 'Dick Johnson on surnud'
}
},
{
'_index': 'netflix',
'_id': 'W3wnVoMBck2AezXPytlJ',
'_version': 1,
'_seq_no': 12,
'_primary_term': 1,
'leitud': tõsi,
'_allikas': {
'riik': 'Saksamaa, Tšehhi Vabariik',
'show_id': 's13',
'režissöör': 'Christian Schwochow',
'release_year': 2021,
'reiting': 'TV-MA',
'kirjeldus': 'Pärast seda, kui suurem osa tema perekonnast mõrvatakse terroristliku pommirünnakus, meelitatakse noort naist teadmatusest liituma selle grupiga, mis ta tappis.'
'tüüp': 'Film',
'title': 'Ma olen Karl',
'kestvus': '127 min',
'listed_in': 'Draamad, rahvusvahelised filmid',
'osatäitjad': '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'
}
}
]

}

Samuti saame taotlust lihtsustada, asetades dokumendi ID-d lihtsasse massiivi, nagu on näidatud järgmiselt:

curl -XGET 'http://localhost:9200/netflix/_mget' -H 'kbn-xsrf: aruandlus' -H 'Sisu tüüp: rakendus/json' -d'
{
'ids': ['T3wnVoMBck2AezXPytlJ', 'W3wnVoMBck2AezXPytlJ']
}'

Eelmine taotlus peaks tegema sarnase toimingu.

Näide 2: hankige dokumendid mitmest indeksist

Järgmises näites hangib taotlus mitu dokumenti erinevatest indeksitest, nagu näidatud:

curl -XGET 'http://localhost:9200/_mget' -H 'kbn-xsrf: aruandlus' -H 'Sisu tüüp: rakendus/json' -d'
{
'dokumendid': [
{
'_index': 'netflix',
'_id': 'T3wnVoMBck2AezXPytlJ'
},
{
'_index': 'disney',
'_id': '8j4wWoMB1yF5VqfaKCE4'
}
]
}'

Saadud väljund on järgmine:

Näide 3: välistage konkreetsed väljad

Saame konkreetsed väljad antud päringust välistada, kasutades parameetreid source_include ja source_exclude.

Näide on järgmine:

curl -XGET 'http://localhost:9200/_mget' -H 'kbn-xsrf: aruandlus' -H 'Sisu tüüp: rakendus/json' -d'
{
'dokumendid': [
{
'_index': 'netflix',
'_id': 'T3wnVoMBck2AezXPytlJ',
'_source': vale
},
{
'_index': 'netflix',
'_id': 'T3wnVoMBck2AezXPytlJ',
'_allikas': {
'include': [ 'listed_in', 'release_year', 'title' ],
'välista': [ 'kirjeldus', 'tüüp', 'lisamiskuupäev']
}
}
]

}'

Antud päring kasutab lähteteksti kaasamist ja välistamist, et määrata, milliseid välju soovite antud dokumendis tuua.

Saadud väljund on järgmine:

Järeldus

Selles postituses arutasime Elasticsearchi multi-get API-ga töötamise põhialuseid, mis võimaldab teil tuua nende ID-de alusel mitut dokumenti erinevatest allikatest. Lisateabe saamiseks uurige julgelt teisi dokumente.

Head kodeerimist!