Pencarian Elastis - pembobotan berdasarkan atribut
Apakah ada cara dalam Pencarian Elastis untuk memberi bobot pada hasil berdasarkan atribut selain yang digunakan untuk kueri pencarian. Misalnya, kami mencari kolom 'name', tetapi semua dokumen yang memiliki 'with_pictures' dikaitkan dengan true weighted lebih tinggi.
Jawaban
Anda dapat menggunakan peningkatan pada masing-masing bidang, yang akan ditingkatkan secara otomatis - lebih menghitung skor relevansi - pada waktu kueri, dengan parameter peningkatan
Menambahkan contoh yang berfungsi dengan data indeks, pemetaan, dan kueri penelusuran
Pemetaan indeks:
{
"mappings": {
"properties": {
"with_pictures": {
"type": "boolean",
"boost": 2
},
"name": {
"type": "keyword"
}
}
}
}
Data indeks:
{
"name": "A",
"with_pictures": false
}
{
"name": "A",
"with_pictures": true
}
{
"name": "B",
"with_pictures": true
}
Permintaan Pencarian:
{
"query": {
"bool": {
"minimum_should_match": 1,
"should": [
{
"bool": {
"should": [
{
"term": {
"name": "A"
}
},
{
"term": {
"with_pictures": true
}
}
]
}
}
]
}
}
}
Hasil pencarian:
"hits": [
{
"_index": "fd_cb1",
"_type": "_doc",
"_id": "1",
"_score": 1.4100108,
"_source": {
"name": "A",
"with_pictures": true
}
},
{
"_index": "fd_cb1",
"_type": "_doc",
"_id": "3",
"_score": 0.9400072,
"_source": {
"name": "B",
"with_pictures": true
}
},
{
"_index": "fd_cb1",
"_type": "_doc",
"_id": "2",
"_score": 0.4700036,
"_source": {
"name": "A",
"with_pictures": false
}
}
]
Skor dokumen yang memenuhi syarat namedan with_propertiessedang memiliki skor tertinggi. Tetapi dokumen tersebut memiliki name: Bdan with_pictures: truememiliki skor lebih tinggi dari name: Adan with_pictures: false(karena peningkatan yang diterapkan padawith_pictures
Anda juga bisa merujuk kueri skor fungsi yang memungkinkan Anda mengubah skor dokumen yang diambil oleh kueri.