Multi-Dapatkan Elasticsearch

Multi Dapatkan Elasticsearch



Artikel ini akan membahas tentang cara menggunakan Elasticsearch multi-get API untuk mengambil beberapa dokumen JSON berdasarkan ID-nya. Selain itu, Elasticsearch memungkinkan Anda menggunakan satu kueri get untuk mengambil dokumen dari indeks hanya dengan menggunakan ID dokumen.

Mari kita jelajahi.







Sintaks Permintaan

Berikut ini adalah sintaks untuk Elasticsearch multi-get API:



DAPATKAN /_mget
DAPATKAN / /_mget

Multi-get API mendukung beberapa indeks yang memungkinkan Anda mengambil dokumen meskipun tidak berada dalam indeks yang sama.



Permintaan mendukung parameter jalur berikut:





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

Anda juga dapat menentukan parameter kueri lainnya seperti yang ditunjukkan:

  1. Pilihan – Mendefinisikan node atau shard yang disukai.
  2. Waktu sebenarnya – Jika disetel ke true, operasi dilakukan secara real-time.
  3. Menyegarkan – Memaksa operasi untuk menyegarkan pecahan target sebelum mengambil dokumen yang ditentukan.
  4. Rute – Nilai yang digunakan untuk mengarahkan operasi ke shard tertentu.
  5. Toko_fields – Mengambil bidang dokumen yang disimpan dalam indeks daripada dokumen.
  6. _sumber – Nilai Boolean yang menentukan apakah permintaan harus mengembalikan bidang _source atau tidak.

Kueri memerlukan isi, yang mencakup nilai-nilai berikut:



  1. Dokumen – Menentukan dokumen yang ingin Anda ambil. Selain itu, bagian ini mendukung atribut berikut:
    • _Indo – ID unik dari dokumen target.
    • _indeks – Indeks yang berisi dokumen target.
    • Rute – Kunci untuk pecahan utama dokumen.
    • _sumber – Jika benar, ini mencakup semua bidang sumber; jika tidak, itu mengecualikan mereka.
    • _stored_fields – Stored_fields yang ingin Anda sertakan.
  2. ID – Id dari dokumen yang ingin Anda ambil.

Contoh 1: Ambil Beberapa Dokumen dari Indeks yang Sama

Contoh berikut menunjukkan cara menggunakan Elasticsearch multi-get API untuk mengambil dokumen dengan ID tertentu dari indeks Netflix:

curl -XGET 'http://localhost:9200/netflix/_mget' -H 'kbn-xsrf: pelaporan' -H 'Tipe Konten: aplikasi/json' -d'
{
'dokumen': [
{
'_id': 'T3wnVoMBck2AEzXPytlJ'
},
{
'_id': 'W3wnVoMBck2AEzXPytlJ'
}
]
}'

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

{
'dokumen': [
{
'_index': 'netflix',
'_id': 'T3wnVoMBck2AEzXPytlJ',
'_versi 1,
'_seq_no': 0,
'_istilah_primer': 1,
'ditemukan': benar,
'_sumber': {
'durasi': '90 menit',
'listed_in': 'Dokumenter',
'negara': 'Amerika Serikat',
'date_added': '25 September 2021',
'show_id': 's1',
'sutradara': 'Kirsten Johnson',
'rilis_tahun': 2020,
'peringkat': 'PG-13',
'description': 'Saat ayahnya mendekati akhir hayatnya, pembuat film Kirsten Johnson mementaskan kematiannya dengan cara yang inventif dan lucu untuk membantu mereka berdua menghadapi hal yang tak terhindarkan.',
'tipe': 'Film',
'title': 'Dick Johnson Sudah Mati'
}
},
{
'_index': 'netflix',
'_id': 'W3wnVoMBck2AEzXPytlJ',
'_versi 1,
'_seq_no': 12,
'_istilah_primer': 1,
'ditemukan': benar,
'_sumber': {
'negara': 'Jerman, Republik Ceko',
'show_id': 's13',
'sutradara': 'Christian Schwochow',
'rilis_tahun': 2021,
'peringkat': 'TV-MA',
'description': 'Setelah sebagian besar keluarganya terbunuh dalam pemboman teroris, seorang wanita muda tanpa sadar terpikat untuk bergabung dengan kelompok yang membunuh mereka.',
'tipe': 'Film',
'judul': 'Saya Karl',
'durasi': '127 menit',
'listed_in': 'Drama, Film Internasional',
'pemeran': '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 dapat menyederhanakan permintaan dengan meletakkan ID dokumen dalam array sederhana seperti yang ditunjukkan berikut ini:

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

Permintaan sebelumnya harus melakukan tindakan serupa.

Contoh 2: Ambil Dokumen dari Beberapa Indeks

Dalam contoh berikut, permintaan mengambil beberapa dokumen dari indeks yang berbeda seperti yang ditunjukkan:

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

Output yang dihasilkan adalah seperti yang ditunjukkan:

Contoh 3: Kecualikan Bidang Tertentu

Kami dapat mengecualikan bidang tertentu dari permintaan yang diberikan menggunakan parameter source_include dan source_exclude.

Contohnya seperti yang ditunjukkan:

curl -XGET 'http://localhost:9200/_mget' -H 'kbn-xsrf: pelaporan' -H 'Tipe Konten: aplikasi/json' -d'
{
'dokumen': [
{
'_index': 'netflix',
'_id': 'T3wnVoMBck2AEzXPytlJ',
'_source': salah
},
{
'_index': 'netflix',
'_id': 'T3wnVoMBck2AEzXPytlJ',
'_sumber': {
'include': [ 'listed_in', 'release_year', 'title' ],
'kecualikan': [ 'deskripsi', 'jenis', 'tanggal_ditambahkan' ]
}
}
]

}'

Permintaan yang diberikan menggunakan sumber sertakan dan kecualikan untuk menentukan bidang mana yang ingin Anda ambil dalam dokumen tertentu.

Output yang dihasilkan adalah seperti yang ditunjukkan:

Kesimpulan

Dalam posting ini, kami membahas dasar-dasar bekerja dengan Elasticsearch multi-get API yang memungkinkan Anda mengambil banyak dokumen dari berbagai sumber berdasarkan ID mereka. Jangan ragu untuk menjelajahi dokumen lain untuk informasi lebih lanjut.

Selamat mengkode!