我正在使用elasticsearch-6.3.1。以下查询按预期工作:
"query": {
"function_score" : {
"query" : {
"match_all" : {}
},
"functions" : [
{
"filter" : {
"match_all" : {}
},
"script_score" : {
"script" : { "source" : "8" }
}
},
{
"filter" : {
"match_all" : {}
},
"script_score" : {
"script" : { "source" : "4" }
}
}
],
"score_mode" : "avg",
"boost" : 0.5
}
}
返回3分(平均(6)乘以提升(0.5))。
但是,如果我删除其中一个功能
"query": {
"function_score" : {
"query" : {
"match_all" : {}
},
"functions" : [
{
"filter" : {
"match_all" : {}
},
"script_score" : {
"script" : { "source" : "8" }
}
}
],
"score_mode" : "avg",
"boost" : 0.5
}
}
我没有加分就得到8分。我在这里想念什么?
答案 0 :(得分:0)
这似乎是elasticsearch的错误,但我在GitHub问题跟踪器中看不到任何故障单。
Weirder:此查询工作正常(只需用简单的权重替换script_score)
{
"query": {
"function_score": {
"query": {
"match_all": {}
},
"functions": [
{
"filter": {
"match_all": {}
},
"weight": 8
}
],
"score_mode": "avg",
"boost": 0.5
}
}
}
=>给出_score
为4
因此,当唯一的功能是script_score -_-!时,ES似乎不应用增强功能。
答案 1 :(得分:0)
似乎在函数上加上“权重”为1即可解决此问题。