Elasticsearch Pilih Medan Khusus

Elasticsearch Pilih Medan Khusus



Elasticsearch secara lalai akan mengembalikan semua medan dalam dokumen apabila melakukan pertanyaan carian. Ini ditakrifkan oleh parameter _source, yang mengandungi semua data yang disimpan dalam rekod semasa pengindeksan.

curl -XGET 'http://localhost:9200/netflix/_doc/HXYz_IIBLbuC0z3qKeN2?pretty' -H 'kbn-xsrf: pelaporan'

Pengeluaran:







Walau bagaimanapun, anda mungkin tidak mahu mendapatkan semula semua medan daripada dokumen yang diberikan. Dalam tutorial ini, anda akan mempelajari cara memilih medan tertentu daripada dokumen.



Pilihan Medan Elasticsearch

Parameter medan membolehkan kami mendapatkan semula medan tertentu dalam permintaan carian. Selain itu, parameter medan akan membolehkan kami mengambil medan tunggal atau berbilang. Anda juga boleh memformat tarikh dan jenis data spatial menggunakan parameter medan.



Sebagai contoh, katakan kita ingin mendapatkan indeks, id, tajuk, release_year, disenaraikan dalam, tempoh dan medan penilaian daripada indeks Netflix, kita boleh menjalankan pertanyaan seperti yang ditunjukkan di bawah:





curl -XGET 'http://localhost/netflix/_search' -H 'kbn-xsrf: pelaporan' -H 'Jenis-Kandungan: aplikasi/json' -d'
{
'pertanyaan': {
'perlawanan': {
'_id': 'HXYz_IIBLbuC0z3qKeN2'
}
},
'medan': [
'indeks',
'ID',
'tajuk',
'release_year',
'listed_in',
'tempoh',
'penilaian'
],
'_source': palsu

}'

Dalam permintaan di atas, kami menggunakan API carian untuk mencari dokumen dengan id yang ditentukan dalam parameter padanan.

Kami kemudian menggunakan parameter medan untuk mengambil medan tertentu daripada dokumen sasaran.



Ambil perhatian bahawa Elasticsearch akan menyertakan parameter _source secara lalai, yang terdiri daripada semua medan dokumen. Untuk memastikan kami hanya mengambil medan yang ditentukan, kami mematikan parameter _source:

Permintaan di atas harus mengembalikan respons seperti yang ditunjukkan:

{
'mengambil': 1,
'masa_habis': palsu,
'_serpihan': {
'jumlah': 1,
'berjaya': 1,
'dilangkau': 0,
'gagal': 0
},
'hits': {
'jumlah': {
'nilai': 1,
'perkaitan': 'eq'
},
'max_score': 1,
'hits': [
{
'_index': 'netflix',
'_id': 'HXYz_IIBLbuC0z3qKeN2',
'_skor': 1,
'medan': {
'listed_in': [
'Dokumentari'
],
'tempoh': [
'90 minit'
],
'release_year': [
2020
],
'penilaian': [
'PG-13'
],
'tajuk': [
'Dick Johnson Telah Mati'
]
}
}
]
}
}

Anda juga boleh menggunakan parameter _source untuk menentukan medan yang hendak dikembalikan daripada pertanyaan carian. Satu contoh ditunjukkan di bawah:

curl -XGET 'http://localhost:9200/netflix/_search' -H 'kbn-xsrf: reporting' -H 'Content-Type: application/json' -d'
{
'_source': ['title', 'release_year', 'rating', 'duration'],
'pertanyaan': {
'istilah': {
'_ID': {
'nilai': 'HXYz_IIBLbuC0z3qKeN2'
}
}
}

}'

Dalam kes ini, kami menentukan medan yang ingin kami dapatkan semula sebagai tatasusunan dalam parameter sumber. Permintaan di atas harus mengembalikan respons seperti yang ditunjukkan:

{
'mengambil': 0,
'masa_habis': palsu,
'_serpihan': {
'jumlah': 1,
'berjaya': 1,
'dilangkau': 0,
'gagal': 0
},
'hits': {
'jumlah': {
'nilai': 1,
'perkaitan': 'eq'
},
'max_score': 1,
'hits': [
{
'_index': 'netflix',
'_id': 'HXYz_IIBLbuC0z3qKeN2',
'_skor': 1,
'_source': {
'tempoh': '90 min',
'release_year': 2020,
'rating': 'PG-13',
'tajuk': 'Dick Johnson Telah Mati'
}
}
]
}

}

Kesimpulan

Dalam artikel ini, anda mempelajari cara mengambil medan tertentu daripada permintaan carian menggunakan medan dan parameter _source.

Untuk mengetahui lebih lanjut tentang Elasticsearch dan keupayaannya, lihat tutorial kami mengenai topik tersebut. Anda dijamin mendapat sesuatu yang berguna.

Terima kasih kerana membaca & Tangkap anda dalam yang seterusnya!!