Saya menggunakan elasticsearch untuk mengindeks dokumen saya.
Apakah mungkin untuk menginstruksikannya hanya mengembalikan bidang tertentu dan bukan seluruh dokumen json yang telah disimpannya?
elasticsearch
pengguna1199438
sumber
sumber
Jawaban:
Ya! Gunakan filter sumber . Jika Anda mencari dengan JSON akan terlihat seperti ini:
Di ES 2.4 dan sebelumnya, Anda juga bisa menggunakan opsi bidang ke API pencarian :
Ini tidak digunakan lagi dalam ES 5+. Dan filter sumber lebih kuat!
sumber
Saya menemukan dokumen untuk
get api
membantu - terutama dua bagian, Penyaringan sumber dan Bidang : https://www.elastic.co/guide/en/elasticsearch/reference/7.3/docs-get.html#get-source- penyaringanMereka menyatakan tentang pemfilteran sumber:
Yang pas dengan case saya. Saya akhirnya hanya memfilter sumber seperti itu (menggunakan singkatan):
FYI, mereka menyatakan dalam dokumen tentang parameter bidang :
Tampaknya untuk memenuhi bidang yang telah disimpan secara khusus, di mana ia menempatkan masing-masing bidang dalam array. Jika bidang yang ditentukan belum disimpan, maka bidang tersebut akan diambil masing-masing dari sumber, yang dapat menyebabkan pengambilan lebih lambat. Saya juga mengalami kesulitan mencoba untuk mengembalikannya ke bidang tipe objek.
Jadi, secara ringkas, Anda memiliki dua opsi, baik pemfilteran sumber atau bidang [tersimpan].
sumber
sumber
Dalam Elasticsearch 5.x pendekatan yang disebutkan di atas sudah usang. Anda bisa menggunakan pendekatan _source, tetapi tetapi dalam situasi tertentu masuk akal untuk menyimpan bidang. Misalnya, jika Anda memiliki dokumen dengan judul, tanggal, dan bidang konten yang sangat besar, Anda mungkin ingin mengambil hanya judul dan tanggal tanpa harus mengekstrak bidang tersebut dari bidang _source besar:
Dalam hal ini, Anda akan menggunakan:
Lihat dokumentasi tentang cara mengindeks bidang yang disimpan. Selalu bahagia untuk Suara positif!
sumber
sumber
filter_filter
https://stackoverflow.com/a/35647027/844700
sumber
Penyaringan sumber
Memungkinkan untuk mengontrol bagaimana bidang _source dikembalikan dengan setiap klik.
Kata kunci "termasuk" mendefinisikan bidang spesifik.
sumber
Permintaan REST API GET dapat dibuat dengan parameter '_source'.
Contoh Permintaan
Tanggapan
}
sumber
Ya dengan menggunakan filter sumber Anda dapat melakukan ini, ini adalah pemfilteran sumber dokumen
Contoh Permintaan
Output akan menjadi
sumber
Di java, Anda bisa menggunakan setFetchSource seperti ini:
sumber
Misalnya, Anda memiliki dokumen dengan tiga bidang:
Jika Anda ingin kembali
name
danscore
Anda dapat menggunakan perintah berikut:Jika Anda ingin mendapatkan beberapa bidang yang cocok dengan pola:
Mungkin mengecualikan beberapa bidang:
sumber
Menggunakan Java API, saya menggunakan yang berikut ini untuk mendapatkan semua catatan dari sekumpulan bidang tertentu:
sumber