Elasticsearch Multi-Get

Elasticsearch Multi Get



Artikel ini akan membincangkan tentang cara menggunakan Elasticsearch multi-get API untuk mengambil berbilang dokumen JSON berdasarkan ID mereka. Selain itu, Elasticsearch membenarkan anda menggunakan satu pertanyaan dapatkan untuk mendapatkan semula dokumen daripada indeks hanya menggunakan ID dokumen.

Jom teroka.







Minta Sintaks

Berikut ialah sintaks untuk Elasticsearch multi-get API:



DAPATKAN /_mget
DAPATKAN / /_mget

API multi-get menyokong berbilang indeks yang membolehkan anda mengambil dokumen walaupun ia tidak berada dalam indeks yang sama.



Permintaan menyokong parameter laluan berikut:





  1. – Nama indeks untuk mendapatkan semula dokumen seperti yang ditentukan oleh ID mereka.

Anda juga boleh menentukan parameter pertanyaan lain seperti yang ditunjukkan:

  1. Pilihan – Mentakrifkan nod atau serpihan pilihan.
  2. Masa sebenar – Jika ditetapkan kepada benar, operasi dilakukan dalam masa nyata.
  3. Segarkan semula – Memaksa operasi untuk menyegarkan serpihan sasaran sebelum mengambil dokumen yang ditentukan.
  4. Penghalaan – Nilai yang digunakan untuk menghalakan operasi ke serpihan tertentu.
  5. Store_fields – Mengambil semula medan dokumen yang disimpan dalam indeks dan bukannya dokumen.
  6. _sumber – Nilai Boolean yang mentakrifkan sama ada permintaan harus mengembalikan medan _source atau tidak.

Pertanyaan memerlukan badan, yang merangkumi nilai berikut:



  1. Dokumen – Tentukan dokumen yang ingin anda ambil. Di samping itu, bahagian ini menyokong atribut berikut:
    • _ID – ID unik dokumen sasaran.
    • _indeks – Indeks yang mengandungi dokumen sasaran.
    • Penghalaan – Kunci untuk serpihan utama dokumen.
    • _sumber – Jika benar, ia termasuk semua medan sumber; jika tidak, ia mengecualikan mereka.
    • _medan_simpan – Stored_fields yang anda ingin sertakan.
  2. id – Id dokumen yang ingin anda ambil.

Contoh 1: Ambil Berbilang Dokumen daripada Indeks yang Sama

Contoh berikut menunjukkan cara menggunakan Elasticsearch multi-get API untuk mendapatkan semula dokumen dengan ID tertentu daripada indeks Netflix:

curl -XGET 'http://localhost:9200/netflix/_mget' -H 'kbn-xsrf: reporting' -H 'Content-Type: application/json' -d'
{
'dokumen': [
{
'_id': 'T3wnVoMBck2AEzXPytlJ'
},
{
'_id': 'W3wnVoMBck2AEzXPytlJ'
}
]
}'

Permintaan yang diberikan harus mengambil dokumen dengan ID yang ditentukan daripada indeks Netflix. Output yang terhasil adalah seperti yang ditunjukkan:

{
'dokumen': [
{
'_index': 'netflix',
'_id': 'T3wnVoMBck2AEzXPytlJ',
'_version': 1,
'_seq_no': 0,
'_primary_term': 1,
'ditemui': benar,
'_source': {
'tempoh': '90 min',
'listed_in': 'Dokumentari',
'country': 'Amerika Syarikat',
'date_added': '25 September 2021',
'show_id': 's1',
'pengarah': 'Kirsten Johnson',
'release_year': 2020,
'rating': 'PG-13',
'description': 'Ketika bapanya menghampiri penghujung hayatnya, pembikin filem Kirsten Johnson melancarkan kematiannya dengan cara yang kreatif dan lucu untuk membantu mereka berdua menghadapi perkara yang tidak dapat dielakkan.',
'type': 'Filem',
'tajuk': 'Dick Johnson Telah Mati'
}
},
{
'_index': 'netflix',
'_id': 'W3wnVoMBck2AEzXPytlJ',
'_version': 1,
'_seq_no': 12,
'_primary_term': 1,
'ditemui': benar,
'_source': {
'country': 'Jerman, Republik Czech',
'show_id': 's13',
'pengarah': 'Christian Schwochow',
'release_year': 2021,
'rating': 'TV-MA',
'description': 'Selepas kebanyakan keluarganya dibunuh dalam pengeboman pengganas, seorang wanita muda tanpa disedari telah terpikat untuk menyertai kumpulan yang membunuh mereka.',
'type': 'Filem',
'title': 'Saya Karl',
'tempoh': '127 min',
'listed_in': 'Drama, Filem Antarabangsa',
'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': '23 September 2021'
}
}
]

}

Kami juga boleh memudahkan permintaan dengan meletakkan ID dokumen dalam tatasusunan mudah seperti yang ditunjukkan dalam yang berikut:

curl -XGET 'http://localhost:9200/netflix/_mget' -H 'kbn-xsrf: pelaporan' -H 'Jenis-Kandungan: aplikasi/json' -d'
{
'ids': ['T3wnVoMBck2AEzXPytlJ', 'W3wnVoMBck2AEzXPytlJ']
}'

Permintaan sebelumnya harus melakukan tindakan yang serupa.

Contoh 2: Ambil Dokumen daripada Berbilang Indeks

Dalam contoh berikut, permintaan mengambil berbilang dokumen daripada indeks yang berbeza seperti yang ditunjukkan:

curl -XGET 'http://localhost:9200/_mget' -H 'kbn-xsrf: pelaporan' -H 'Jenis-Kandungan: aplikasi/json' -d'
{
'dokumen': [
{
'_index': 'netflix',
'_id': 'T3wnVoMBck2AEzXPytlJ'
},
{
'_index': 'disney',
'_id': '8j4wWoMB1yF5VqfaKCE4'
}
]
}'

Output yang terhasil adalah seperti yang ditunjukkan:

Contoh 3: Kecualikan Medan Khusus

Kami boleh mengecualikan medan tertentu daripada permintaan yang diberikan menggunakan parameter source_include dan source_exclude.

Contohnya adalah seperti yang ditunjukkan:

curl -XGET 'http://localhost:9200/_mget' -H 'kbn-xsrf: pelaporan' -H 'Jenis-Kandungan: aplikasi/json' -d'
{
'dokumen': [
{
'_index': 'netflix',
'_id': 'T3wnVoMBck2AEzXPytlJ',
'_source': palsu
},
{
'_index': 'netflix',
'_id': 'T3wnVoMBck2AEzXPytlJ',
'_source': {
'include': [ 'listed_in', 'release_year', 'title' ],
'kecualikan': [ 'penerangan', 'jenis', 'tarikh_tambah' ]
}
}
]

}'

Permintaan yang diberikan menggunakan sumber sertakan dan kecualikan untuk menentukan medan yang anda ingin dapatkan semula dalam dokumen yang diberikan.

Output yang terhasil adalah seperti yang ditunjukkan:

Kesimpulan

Dalam siaran ini, kami membincangkan asas bekerja dengan Elasticsearch multi-get API yang membolehkan anda mengambil berbilang dokumen daripada pelbagai sumber berdasarkan ID mereka. Sila terokai dokumen lain untuk mendapatkan maklumat lanjut.

Selamat mengekod!