Elasticsearch Multi-Get

Elasticsearch Multi Get



Acest articol va discuta despre cum să utilizați API-ul multi-get Elasticsearch pentru a prelua mai multe documente JSON pe baza ID-urilor acestora. În plus, Elasticsearch vă permite să utilizați o singură interogare de obținere pentru a prelua documentele din indici folosind doar ID-urile documentului.

Să explorăm.







Sintaxa de solicitare

Următoarea este sintaxa pentru API-ul multi-get Elasticsearch:



GET /_mget
GET / /_mget

API-ul multi-get acceptă mai mulți indici, ceea ce vă permite să preluați documentele chiar dacă acestea nu se află în același index.



Solicitarea acceptă următorii parametri de cale:





  1. – Numele indexului de pe care să se recupereze documentele specificate de ID-urile lor.

De asemenea, puteți specifica ceilalți parametri de interogare, așa cum se arată:

  1. Preferinţă – Definește nodul sau fragmentul preferat.
  2. Timp real – Dacă este setată la true, operația este efectuată în timp real.
  3. Reîmprospăta – Forțează operația să reîmprospăteze fragmentele țintă înainte de a prelua documentele specificate.
  4. Dirijare – O valoare care este utilizată pentru a direcționa operațiunile către un anumit fragment.
  5. Câmpuri_magazin – Preluează câmpurile documentului stocate într-un index, mai degrabă decât în ​​document.
  6. _sursă – O valoare booleană care definește dacă cererea trebuie să returneze câmpul _source sau nu.

Interogarea necesită corpul, care include următoarele valori:



  1. Docs – Specifică documentele pe care doriți să le preluați. În plus, această secțiune acceptă următoarele atribute:
    • _id – ID unic al documentului țintă.
    • _index – Indexul care conține documentul țintă.
    • Dirijare – Cheia pentru fragmentul primar al documentului.
    • _sursă – Dacă este adevărat, include toate câmpurile sursă; în caz contrar, îi exclude.
    • _câmpuri_stocate – Câmpurile_stocate pe care doriți să le includeți.
  2. Id-uri – Id-urile documentelor pe care doriți să le preluați.

Exemplul 1: Preluați mai multe documente din același index

Următorul exemplu arată cum să utilizați API-ul multi-get Elasticsearch pentru a prelua documentele cu anumite ID-uri din indexul Netflix:

curl -XGET 'http://localhost:9200/netflix/_mget' -H 'kbn-xsrf: raportare' -H 'Tip conținut: aplicație/json' -d'
{
„docs”: [
{
'_id': 'T3wnVoMBck2AEzXPytlJ'
},
{
'_id': 'W3wnVoMBck2AEzXPytlJ'
}
]
}'

Solicitarea dată ar trebui să preia documentele cu ID-urile specificate din indexul Netflix. Rezultatul rezultat este așa cum se arată:

{
„docs”: [
{
'_index': 'netflix',
'_id': 'T3wnVoMBck2AEzXPytlJ',
„_versiunea”: 1,
„_seq_no”: 0,
„_primary_term”: 1,
„găsit”: adevărat,
'_sursă': {
„durată”: „90 min”,
'listed_in': 'Documentare',
„country”: „Statele Unite”,
'date_added': '25 septembrie 2021',
'show_id': 's1',
„director”: „Kirsten Johnson”,
„release_year”: 2020,
„evaluare”: „PG-13”,
„descriere”: „Pe măsură ce tatăl ei se apropie de sfârșitul vieții, realizatorul Kirsten Johnson își pune în scenă moartea în moduri inventive și comice pentru a-i ajuta pe amândoi să facă față inevitabilului.”
'type': 'Film',
„title”: „Dick Johnson este mort”
}
},
{
'_index': 'netflix',
'_id': 'W3wnVoMBck2AEzXPytlJ',
„_versiunea”: 1,
„_seq_no”: 12,
„_primary_term”: 1,
„găsit”: adevărat,
'_sursă': {
„țară”: „Germania, Republica Cehă”,
'show_id': 's13',
„director”: „Christian Schwochow”,
„release_year”: 2021,
'evaluare': 'TV-MA',
„descriere”: „După ce cea mai mare parte a familiei ei este ucisă într-un atentat terorist cu bombă, o tânără este atrasă fără să știe să se alăture grupului care i-a ucis.”
'type': 'Film',
'title': 'Eu sunt Karl',
„durată”: „127 min”,
'listed_in': 'Drame, filme internaționale',
„distribuție”: „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 septembrie 2021'
}
}
]

}

De asemenea, putem simplifica solicitarea punând ID-urile documentului într-o matrice simplă, așa cum se arată în următoarele:

curl -XGET 'http://localhost:9200/netflix/_mget' -H 'kbn-xsrf: raportare' -H 'Tip conținut: aplicație/json' -d'
{
'ids': ['T3wnVoMBck2AEzXPytlJ', 'W3wnVoMBck2AEzXPytlJ']
}'

Solicitarea anterioară ar trebui să efectueze o acțiune similară.

Exemplul 2: Preluați documentele din mai multe indicii

În exemplul următor, cererea preia mai multe documente din indici diferiți, după cum se arată:

curl -XGET 'http://localhost:9200/_mget' -H 'kbn-xsrf: raportare' -H 'Tip de conținut: aplicație/json' -d'
{
„docs”: [
{
'_index': 'netflix',
'_id': 'T3wnVoMBck2AEzXPytlJ'
},
{
'_index': 'disney',
„_id”: „8j4wWoMB1yF5VqfaKCE4”
}
]
}'

Rezultatul rezultat este așa cum se arată:

Exemplul 3: Excludeți anumite câmpuri

Putem exclude anumite câmpuri dintr-o solicitare dată utilizând parametrii source_include și source_exclude.

Un exemplu este așa cum se arată:

curl -XGET 'http://localhost:9200/_mget' -H 'kbn-xsrf: raportare' -H 'Tip de conținut: aplicație/json' -d'
{
„docs”: [
{
'_index': 'netflix',
'_id': 'T3wnVoMBck2AEzXPytlJ',
„_sursă”: fals
},
{
'_index': 'netflix',
'_id': 'T3wnVoMBck2AEzXPytlJ',
'_sursă': {
„include”: [ „listed_in”, „release_year”, „title” ],
„exclude”: [ „descriere”, „tip”, „data_adăugată” ]
}
}
]

}'

Solicitarea dată utilizează sursa include și exclude pentru a specifica ce câmpuri doriți să preluați dintr-un anumit document.

Rezultatul rezultat este așa cum se arată:

Concluzie

În această postare, am discutat elementele fundamentale ale lucrului cu API-ul multi-get Elasticsearch, care vă permite să preluați mai multe documente din diverse surse pe baza ID-urilor lor. Nu ezitați să explorați celelalte documente pentru mai multe informații.

Codare fericită!