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 /
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:
-
– indeksi nimi, millest dokumendid alla laadida vastavalt nende ID-dele.
Saate määrata ka muud päringuparameetrid, nagu näidatud:
- Eelistus – Määrab eelistatud sõlme või killu.
- Reaalajas – Kui see on seatud tõeseks, tehakse toiming reaalajas.
- Värskenda – Sunnib toimingut sihtkillud enne määratud dokumentide toomist värskendama.
- Marsruutimine – Väärtus, mida kasutatakse toimingute suunamiseks konkreetsele killule.
- Store_fields – Toob välja registrisse salvestatud dokumendiväljad, mitte dokumendi.
- _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:
- 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.
- 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!