Elasticsearch Multi-Get

Elasticsearch Multi Get



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 / /_mget

Multi-get API tukee useita indeksejä, joiden avulla voit noutaa asiakirjat, vaikka ne eivät olisi samassa hakemistossa.



Pyyntö tukee seuraavia polkuparametreja:





  1. – Hakemiston nimi, josta asiakirjat haetaan niiden tunnistetietojen mukaisesti.

Voit myös määrittää muut kyselyparametrit kuvan mukaisesti:

  1. etusija – Määrittää ensisijaisen solmun tai sirpaleen.
  2. Reaaliaika – Jos asetus on tosi, toiminto suoritetaan reaaliajassa.
  3. virkistää – Pakottaa toiminnon päivittämään kohteen sirpaleet ennen määritettyjen asiakirjojen hakemista.
  4. Reititys – Arvo, jota käytetään toimintojen reitittämiseen tiettyyn sirpaleeseen.
  5. Store_fields – Hakee asiakirjan sijaan hakemistoon tallennetut asiakirjakentät.
  6. _lähde – Boolen arvo, joka määrittää, tuleeko pyynnön palauttaa _source-kenttä vai ei.

Kysely vaatii rungon, joka sisältää seuraavat arvot:



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