iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 21
1
Elastic Stack on Cloud

少女人妻的30天Elastic系列 第 21

【少女人妻的30天Elastic】Day 21 : Elastic App Search_Search, Boosts API

  • 分享至 

  • xImage
  •  

Aloha!我是少女人妻 Uerica!時間過得好快,鐵人賽只剩下十天拉~!


Search, Boosts

還記得我們前面提到欄位搜尋比重提升的概念嗎?所有搜尋結果的排序會依照美筆資料的 "score" 來計算, "score" 越高資料排序越前面,而提升 "score" 的操作細節我們就稱為 Boosts 。

Value Boost

提高搜尋欄位中某個值的score

  • type (required): Boost 的類型,這邊是 value。
  • value (required): 需要提升的欄位資料值,可以用array定義多個值
  • operation (optional): 計算score的運算元,可選擇加 add 或乘 multiply,預設為 add
  • factor (optional): 提升 score 的影響分數,需在 0 - 10 之間,預設為 1.0
curl -X POST '{API_Endpoint}/api/as/v1/engines/{ENGINE_NAME}/search' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer search-xxxxxxxxxx' \
-d '{
  "query": "heritage site",
  "boosts": {
    "world_heritage_site": [
      {
        "type": "value",
        "value": "true",
        "operation": "multiply",
        "factor": 10
      }
    ]
  }
}'

Functional Boost

應用函數來提升score值

  • type (required): Boost 的類型,這邊是 functional
  • function (required): 提升score值的函數類型,可以是linear、 exponential、logarithmic
  • operation (optional): 計算score的運算元,可選擇加 add 或乘 multiply,預設為 add
  • factor (optional): 提升 score 的影響分數,需在 0 - 10 之間,預設為 1.0  
curl -X POST '{API_Endpoint}/api/as/v1/engines/{ENGINE_NAME}/search' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer search-xxxxxxxxxx' \
-d '{
  "boosts": {
    "visitors": {
      "type": "functional",
      "function": "logarithmic",
      "operation": "multiply",
      "factor": 2
    }
  },
  "query": "popular parks"
}'

Proximity Boost

提升鄰近地理位置或接近指定數字的score

  • type (required): Boost 的類型,這邊是 proximity
  • center (required): 提升 score 值的依據,參考值
  • function (required): 提升score值的函數類型,可以是linear、 exponential、logarithmic
  • factor (optional): 提升 score 的影響分數,需在 0 - 10 之間,預設為 1.0
curl -X POST '{API_Endpoint}/api/as/v1/engines/{ENGINE_NAME}/search' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer search-xxxxxxxxxx' \
-d '{
  "boosts": {
    "location": {
      "type": "proximity",
      "function": "linear",
      "center": "25.32, -80.93",
      "factor": 8
    }
  },
  "query": "old growth"
}'

Recency Boost

提升鄰近日期的score

  • type (required): Boost 的類型,這邊是 proximity
  • center (required): 提升 score 值的依據日期,不過通常是用 now 來代表當下日期
  • function (required): 提升score值的函數類型,可以是linear、 exponential、logarithmic
  • factor (optional): 提升 score 的影響分數,需在 0 - 10 之間,預設為 1.0
curl -X POST '{API_Endpoint}/api/as/v1/engines/{ENGINE_NAME}/search' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer search-xxxxxxxxxx' \
-d '{
  "boosts": {
    "date_established": {
      "type": "proximity",
      "function": "linear",
      "center": "now",
      "factor": 8
    }
  },
  "query": "old growth"
}'

使用類型需遵守以下表格

Type Value Boosts Functional Boosts Proximity Boosts Recency Boosts
text Yes No No No
number Yes Yes Yes No
date Yes No No Yes
geolocation Yes No Yes No

感謝大家閱讀,明天見拉~掰掰


上一篇
【少女人妻的30天Elastic】Day 20 : Elastic App Search_Search API
下一篇
【少女人妻的30天Elastic】Day 22 : Elastic App Search_Search, Facets API
系列文
少女人妻的30天Elastic30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言