Pencarian Elastis - pembobotan berdasarkan atribut

Aug 21 2020

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

2 ESCoder Aug 21 2020 at 09:08

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.