2016-01-14 17 views
2

在這裏給更高優先級的具體範圍是從我的索引在elasticsearch

{ 
"name" : "Neil Buckinson", 
"insuranceType" : "personal", 
"premiumAmount": 4000, 
"age": 36 
} 

我想給收費金額3500文件4500多個優先級比其他的樣本文件。我如何在elasticsearch中做到這一點?

回答

1

我想說一個更好的辦法是功能評分與查詢的過濾功能 -

{ 
    "query": { 
    "function_score": { 
     "functions": [ 
     { 
      "weight": 100, 
      "filter": { 
      "range": { 
       "premiumAmount": { 
       "gte": 3500, 
       "lte": 4500 
       } 
      } 
      } 
     } 
     ] 
    } 
    } 
} 
1

這很簡單。只需使用Bool Query並在should條款中添加您的條件。

bool查詢需要更百搭是-較好的方法,所以從每個匹配的mustshould子句得分 將被加在一起以提供 每個文檔的最終_score

GET /index/_search 
{ 
    "query": { 
    "bool": { 
     "must": [ 
     { 
      "match_all": {} 
     } 
     ], 
     "should": [ 
     { 
      "range": { 
      "premiumAmount": { 
       "gte": 3500, 
       "lte": 4500 
      }, 
      "boost": 2 
      } 
     } 
     ] 
    } 
    } 
} 

只要將當前查詢的must條款,而不是match_all

should意味着,這個條件是可選的,但如果您的條件相匹配,它會提高你的文檔 這正是你要尋找的。