Elasticsearch Multi-Get

Elasticsearch Multi Get



Tatalakayin ng artikulong ito kung paano gamitin ang Elasticsearch multi-get API para kumuha ng maraming JSON na dokumento batay sa kanilang mga ID. Bilang karagdagan, pinapayagan ka ng Elasticsearch na gumamit ng isang query sa pagkuha upang makuha ang mga dokumento mula sa mga indeks gamit lamang ang mga ID ng dokumento.

Mag-explore tayo.







Humiling ng Syntax

Ang sumusunod ay ang syntax para sa Elasticsearch multi-get API:



GET /_mget
GET / /_mget

Sinusuportahan ng multi-get API ang maraming mga indeks na nagbibigay-daan sa iyong kunin ang mga dokumento kahit na wala sila sa parehong index.



Sinusuportahan ng kahilingan ang mga sumusunod na parameter ng path:





  1. – Ang pangalan ng index kung saan kukunin ang mga dokumento ayon sa tinukoy ng kanilang mga ID.

Maaari mo ring tukuyin ang iba pang mga parameter ng query tulad ng ipinapakita:

  1. Kagustuhan – Tinutukoy ang gustong node o shard.
  2. Totoong oras – Kung nakatakda sa true, ang operasyon ay isasagawa sa real-time.
  3. Refresh – Pinipilit ang operasyon na i-refresh ang mga target na shards bago kunin ang mga tinukoy na dokumento.
  4. Pagruruta – Isang halaga na ginagamit upang iruta ang mga operasyon sa isang partikular na shard.
  5. Store_fields – Kinukuha ang mga field ng dokumento na nakaimbak sa isang index kaysa sa dokumento.
  6. _source – Isang Boolean value na tumutukoy kung dapat ibalik ng kahilingan ang _source field o hindi.

Ang Query ay nangangailangan ng katawan, na kinabibilangan ng mga sumusunod na halaga:



  1. Docs – Tinutukoy ang mga dokumentong nais mong kunin. Bilang karagdagan, sinusuportahan ng seksyong ito ang mga sumusunod na katangian:
    • _id – Natatanging ID ng target na dokumento.
    • _index – Ang index na naglalaman ng target na dokumento.
    • Pagruruta – Ang susi para sa pangunahing shard ng dokumento.
    • _source – Kung totoo, kasama nito ang lahat ng source field; kung hindi, hindi sila kasama.
    • _storeed_fields – Ang stored_fields na gusto mong isama.
  2. Mga ID – Ang mga id ng mga dokumento na nais mong kunin.

Halimbawa 1: Kumuha ng Maramihang Dokumento mula sa Parehong Index

Ipinapakita ng sumusunod na halimbawa kung paano gamitin ang Elasticsearch multi-get API upang makuha ang mga dokumentong may mga partikular na ID mula sa index ng Netflix:

curl -XGET 'http://localhost:9200/netflix/_mget' -H 'kbn-xsrf: pag-uulat' -H 'Content-Uri: application/json' -d'
{
'docs': [
{
'_id': 'T3wnVoMBck2AEzXPytlJ'
},
{
'_id': 'W3wnVoMBck2AEzXPytlJ'
}
]
}'

Dapat kunin ng ibinigay na kahilingan ang mga dokumentong may mga tinukoy na ID mula sa index ng Netflix. Ang resultang output ay tulad ng ipinapakita:

{
'docs': [
{
'_index': 'netflix',
'_id': 'T3wnVoMBck2AEzXPytlJ',
'_bersyon': 1,
'_seq_no': 0,
'_primary_term': 1,
'nahanap': totoo,
'_source': {
'tagal': '90 min',
'listed_in': 'Mga Dokumentaryo',
'country': 'Estados Unidos',
'date_added': 'Setyembre 25, 2021',
'show_id': 's1',
'director': 'Kirsten Johnson',
'release_year': 2020,
'rating': 'PG-13',
'description': 'Habang malapit nang mamatay ang kanyang ama, isinagawa ng filmmaker na si Kirsten Johnson ang kanyang kamatayan sa mga mapag-imbento at nakakatawang paraan upang matulungan silang dalawa na harapin ang hindi maiiwasang pangyayari.',
'type': 'Pelikula',
'title': 'Patay na si Dick Johnson'
}
},
{
'_index': 'netflix',
'_id': 'W3wnVoMBck2AEzXPytlJ',
'_bersyon': 1,
'_seq_no': 12,
'_primary_term': 1,
'nahanap': totoo,
'_source': {
'country': 'Germany, Czech Republic',
'show_id': 's13',
'director': 'Christian Schwochow',
'release_year': 2021,
'rating': 'TV-MA',
'description': 'Matapos ang karamihan sa kanyang pamilya ay mapatay sa isang teroristang pambobomba, isang batang babae ang hindi alam na naakit na sumali sa mismong grupo na pumatay sa kanila.',
'type': 'Pelikula',
'title': 'Ako si Karl',
'tagal': '127 min',
'listed_in': 'Mga Drama, Internasyonal na Pelikula',
'cast': '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': 'Setyembre 23, 2021'
}
}
]

}

Maaari rin naming gawing simple ang kahilingan sa pamamagitan ng paglalagay ng mga ID ng dokumento sa isang simpleng hanay tulad ng ipinapakita sa sumusunod:

curl -XGET 'http://localhost:9200/netflix/_mget' -H 'kbn-xsrf: pag-uulat' -H 'Content-Uri: application/json' -d'
{
'ids': ['T3wnVoMBck2AEzXPytlJ', 'W3wnVoMBck2AEzXPytlJ']
}'

Ang nakaraang kahilingan ay dapat magsagawa ng katulad na pagkilos.

Halimbawa 2: Kunin ang Mga Dokumento mula sa Maramihang Indicies

Sa sumusunod na halimbawa, ang kahilingan ay kumukuha ng maraming dokumento mula sa iba't ibang mga indeks tulad ng ipinapakita:

curl -XGET 'http://localhost:9200/_mget' -H 'kbn-xsrf: pag-uulat' -H 'Content-Type: application/json' -d'
{
'docs': [
{
'_index': 'netflix',
'_id': 'T3wnVoMBck2AEzXPytlJ'
},
{
'_index': 'disney',
'_id': '8j4wWoMB1yF5VqfaKCE4'
}
]
}'

Ang resultang output ay tulad ng ipinapakita:

Halimbawa 3: Ibukod ang Mga Tukoy na Field

Maaari naming ibukod ang mga partikular na field mula sa isang ibinigay na kahilingan gamit ang source_include at source_exclude na mga parameter.

Ang isang halimbawa ay tulad ng ipinapakita:

curl -XGET 'http://localhost:9200/_mget' -H 'kbn-xsrf: pag-uulat' -H 'Content-Type: application/json' -d'
{
'docs': [
{
'_index': 'netflix',
'_id': 'T3wnVoMBck2AEzXPytlJ',
'_source': mali
},
{
'_index': 'netflix',
'_id': 'T3wnVoMBck2AEzXPytlJ',
'_source': {
'include': [ 'listed_in', 'release_year', 'title' ],
'ibukod': [ 'paglalarawan', 'uri', 'petsa_nadagdag' ]
}
}
]

}'

Ang ibinigay na kahilingan ay gumagamit ng pinagmulan na kasama at hindi kasama upang tukuyin kung aling mga patlang ang nais mong makuha sa isang ibinigay na dokumento.

Ang resultang output ay tulad ng ipinapakita:

Konklusyon

Sa post na ito, tinalakay namin ang mga batayan ng pagtatrabaho sa Elasticsearch multi-get API na nagbibigay-daan sa iyong kumuha ng maraming dokumento mula sa iba't ibang mapagkukunan batay sa kanilang mga ID. Huwag mag-atubiling tuklasin ang iba pang mga dokumento para sa higit pang impormasyon.

Maligayang coding!