Tässä artikkelissa keskustellaan siitä, kuinka Elasticsearch-multi-get-sovellusliittymää käytetään useiden JSON-asiakirjojen hakemiseen niiden tunnuksien perusteella. Lisäksi Elasticsearchin avulla voit käyttää yhtä hakukyselyä dokumenttien hakemiseen indekseistä käyttämällä vain asiakirjatunnuksia.
Tutkitaanpa.
Pyydä syntaksia
Seuraava on Elasticsearch multi-get API:n syntaksi:
GET /_mget
GET /
Multi-get API tukee useita indeksejä, joiden avulla voit noutaa asiakirjat, vaikka ne eivät olisi samassa hakemistossa.
Pyyntö tukee seuraavia polkuparametreja:
-
– Hakemiston nimi, josta asiakirjat haetaan niiden tunnistetietojen mukaisesti.
Voit myös määrittää muut kyselyparametrit kuvan mukaisesti:
- etusija – Määrittää ensisijaisen solmun tai sirpaleen.
- Reaaliaika – Jos asetus on tosi, toiminto suoritetaan reaaliajassa.
- virkistää – Pakottaa toiminnon päivittämään kohteen sirpaleet ennen määritettyjen asiakirjojen hakemista.
- Reititys – Arvo, jota käytetään toimintojen reitittämiseen tiettyyn sirpaleeseen.
- Store_fields – Hakee asiakirjan sijaan hakemistoon tallennetut asiakirjakentät.
- _lähde – Boolen arvo, joka määrittää, tuleeko pyynnön palauttaa _source-kenttä vai ei.
Kysely vaatii rungon, joka sisältää seuraavat arvot:
- Asiakirjat – Määrittää asiakirjat, jotka haluat noutaa. Lisäksi tämä osio tukee seuraavia määritteitä:
- _id – Kohdeasiakirjan yksilöllinen tunnus.
- _indeksi – Hakemisto, joka sisältää kohdeasiakirjan.
- Reititys – Asiakirjan ensisijaisen sirpaleen avain.
- _lähde – Jos tosi, se sisältää kaikki lähdekentät; muuten se sulkee ne pois.
- _stored_fields – Tallennetut_kentät, jotka haluat sisällyttää.
- Ids – Niiden asiakirjojen tunnukset, jotka haluat hakea.
Esimerkki 1: Hae useita asiakirjoja samasta hakemistosta
Seuraava esimerkki näyttää, kuinka Elasticsearch-multi-get-sovellusliittymää käytetään tietyillä tunnuksilla varustettujen asiakirjojen hakemiseen Netflix-hakemistosta:
curl -XGET 'http://localhost:9200/netflix/_mget' -H 'kbn-xsrf: raportointi' -H 'Sisältötyyppi: sovellus/json' -d'{
'asiakirjat': [
{
'_id': 'T3wnVoMBck2AezXPytlJ'
},
{
'_id': 'W3wnVoMBck2AezXPytlJ'
}
]
}'
Annetun pyynnön tulee hakea asiakirjat määritetyillä tunnuksilla Netflix-hakemistosta. Tuloksena oleva tulos on seuraavanlainen:
{'asiakirjat': [
{
'_index': 'netflix',
'_id': 'T3wnVoMBck2AezXPytlJ',
'_versio': 1,
'_seq_no': 0,
'_primary_term': 1,
'löydetty': totta,
'_lähde': {
'duration': '90 min',
'listed_in': 'Dokumentit',
'maa': 'Yhdysvallat',
'date_added': '25. syyskuuta 2021',
'show_id': 's1',
'ohjaaja': 'Kirsten Johnson',
'release_year': 2020,
'luokitus': 'PG-13',
'kuvaus': 'Kun hänen isänsä lähestyy elämänsä loppua, elokuvantekijä Kirsten Johnson lavastelee kuolemansa kekseliäisillä ja koomisilla tavoilla auttaakseen heitä kohtaamaan väistämättömän.'
'type': 'Elokuva',
'title': 'Dick Johnson Is Dead'
}
},
{
'_index': 'netflix',
'_id': 'W3wnVoMBck2AezXPytlJ',
'_versio': 1,
'_seq_no': 12,
'_primary_term': 1,
'löydetty': totta,
'_lähde': {
'maa': 'Saksa, Tšekki',
'show_id': 's13',
'ohjaaja': 'Christian Schwochow',
'release_year': 2021,
'luokitus': 'TV-MA',
'kuvaus': 'Kun suurin osa hänen perheestään on murhattu terroristipommi-iskussa, nuori nainen houkutellaan tietämättään liittymään samaan ryhmään, joka tappoi heidät.'
'type': 'Elokuva',
'title': 'I Am Karl',
'duration': '127 min',
'listed_in': 'Draamat, kansainväliset elokuvat',
'näyttelijät': '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. syyskuuta 2021'
}
}
]
}
Voimme myös yksinkertaistaa pyyntöä asettamalla asiakirjatunnukset yksinkertaiseen taulukkoon seuraavan kuvan mukaisesti:
curl -XGET 'http://localhost:9200/netflix/_mget' -H 'kbn-xsrf: raportointi' -H 'Sisältötyyppi: sovellus/json' -d'{
'ids': ['T3wnVoMBck2AEzXPytlJ', 'W3wnVoMBck2AezXPytlJ']
}'
Edellisen pyynnön tulisi suorittaa samanlainen toimenpide.
Esimerkki 2: Hae asiakirjat useista indekseistä
Seuraavassa esimerkissä pyyntö hakee useita asiakirjoja eri indekseistä kuvan mukaisesti:
curl -XGET 'http://localhost:9200/_mget' -H 'kbn-xsrf: raportointi' -H 'Sisältötyyppi: sovellus/json' -d'{
'asiakirjat': [
{
'_index': 'netflix',
'_id': 'T3wnVoMBck2AezXPytlJ'
},
{
'_index': 'disney',
'_id': '8j4wWoMB1yF5VqfaKCE4'
}
]
}'
Tuloksena oleva tulos on seuraavanlainen:
Esimerkki 3: Sulje pois tietyt kentät
Voimme sulkea pois tietyt kentät tietystä pyynnöstä käyttämällä source_include- ja source_exclude-parametreja.
Esimerkki on seuraavanlainen:
curl -XGET 'http://localhost:9200/_mget' -H 'kbn-xsrf: raportointi' -H 'Sisältötyyppi: sovellus/json' -d'{
'asiakirjat': [
{
'_index': 'netflix',
'_id': 'T3wnVoMBck2AezXPytlJ',
'_source': false
},
{
'_index': 'netflix',
'_id': 'T3wnVoMBck2AezXPytlJ',
'_lähde': {
'include': [ 'listed_in', 'release_year', 'title' ],
'exclude': [ 'kuvaus', 'tyyppi', 'lisäyspäivämäärä' ]
}
}
]
}'
Annettu pyyntö käyttää lähteen sisällyttämistä ja poissulkemista määrittääkseen, mitkä kentät haluat noutaa tietyssä asiakirjassa.
Tuloksena oleva tulos on seuraavanlainen:
Johtopäätös
Tässä viestissä keskustelimme Elasticsearch multi-get API:n kanssa työskentelyn perusteista, jonka avulla voit noutaa useita asiakirjoja eri lähteistä niiden tunnusten perusteella. Tutustu muihin asiakirjoihin saadaksesi lisätietoja.
Hyvää koodausta!