在這裏給更高優先級的具體範圍是從我的索引在elasticsearch
{
"name" : "Neil Buckinson",
"insuranceType" : "personal",
"premiumAmount": 4000,
"age": 36
}
我想給收費金額3500文件4500多個優先級比其他的樣本文件。我如何在elasticsearch中做到這一點?
在這裏給更高優先級的具體範圍是從我的索引在elasticsearch
{
"name" : "Neil Buckinson",
"insuranceType" : "personal",
"premiumAmount": 4000,
"age": 36
}
我想給收費金額3500文件4500多個優先級比其他的樣本文件。我如何在elasticsearch中做到這一點?
我想說一個更好的辦法是功能評分與查詢的過濾功能 -
{
"query": {
"function_score": {
"functions": [
{
"weight": 100,
"filter": {
"range": {
"premiumAmount": {
"gte": 3500,
"lte": 4500
}
}
}
}
]
}
}
}
這很簡單。只需使用Bool Query並在should
條款中添加您的條件。
的
bool
查詢需要更百搭是-較好的方法,所以從每個匹配的must
或should
子句得分 將被加在一起以提供 每個文檔的最終_score
。
GET /index/_search
{
"query": {
"bool": {
"must": [
{
"match_all": {}
}
],
"should": [
{
"range": {
"premiumAmount": {
"gte": 3500,
"lte": 4500
},
"boost": 2
}
}
]
}
}
}
只要將當前查詢的must
條款,而不是match_all
。
should
意味着,這個條件是可選的,但如果您的條件相匹配,它會提高你的文檔 這正是你要尋找的。