2016-07-21 60 views
1

有沒有辦法在elasticsearch的bool查詢中將最小分數應用到must子句中。在Elasticsearch的布爾查詢中的「必須」的Min_score

我希望能夠做這樣的事情:

{ 
    "query": { 
    "bool": { 
     "must": [ 
      { 
       "match": { 
       "name": { 
        "query":"A Name", 
        "min_score": 0.3 
       } 
       } 
      }, 
      { 
       "match": { 
       "address": { 
        "query":"1 Somewhere Street, Somewhereset, UK", 
        "min_score": 0.3 
       } 
       } 
      } 
     ] 
    } 
    } 
} 

這將需要的姓名查詢相匹配的得分> 0.3,地址查詢相匹配的得分> 0.3的文檔被退回。儘管有可怕的地址匹配(例如,僅匹配1),但這仍然阻止返回真正的好名字匹配,反之亦然。

我目前正在使用Elasticsearch 1.5,但我也希望這在過去的2.3。

+1

指定彈性的版本可以幫助很多的一些問題 - 有V1和V2之間的差異5。 – Harvey

回答

2

試試這個,讓我知道,如果它的工作原理:

{ 
    "query": { 
    "bool": { 
     "must": [ 
     { 
      "function_score": { 
      "query": { 
       "match": { 
       "name": { 
        "query": "A Name" 
       } 
       } 
      }, 
      "min_score": 0.3 
      } 
     }, 
     { 
      "function_score": { 
      "query": { 
       "match": { 
       "address": { 
        "query": "1 Somewhere Street, Somewhereset, UK" 
       } 
       } 
      }, 
      "min_score": 0.3 
      } 
     } 
     ] 
    } 
    } 
} 
+0

這很好。我曾想過使用函數分數查詢,但我想我需要使用函數來使分數變得如此之低,以至於不會超過整體最低分數。另外,我期待它太慢而不實際,但它看起來並不慢,因爲它實際上並沒有使用函數。謝謝。 – kiml42

+0

歡迎您:-)。 –

相關問題