Boost不适用于elasticsearch function_score

时间:2018-10-31 09:53:35

标签: elasticsearch

我正在使用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分。我在这里想念什么?

2 个答案:

答案 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即可解决此问题。