You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Elasticsearch使用script_score报does not support [query]错如何解决

报错原因

你混淆了Elasticsearch中两种script_score的用法:

  • 作为独立查询类型的script_score支持配置query字段,用于限定计算评分的文档范围
  • 作为function_score下functions数组内的评分函数时,script_score仅支持配置script字段,不支持query参数,你当前场景属于第二种用法,因此触发解析错误。
解决方案

你原本的逻辑是命中对应title关键词时,才累加对应参数计算的自定义分值,只需要调整functions数组内的配置结构:将原本写在script_score内的query字段提取出来,作为当前function同级的filter触发条件即可。

修正后的核心配置示例如下:

"functions": [
  {
    "weight": 0
  },
  {
    "filter": {
      "term": {
        "title": "jordan"
      }
    },
    "script_score": {
      "script": {
        "source": "params.termFreq * Math.log10((params.doCount - (params.allDocFreq  * params.numDocs/params.maxDocs) + 1) / (params.allDocFreq * params.numDocs/params.maxDocs)) / Math.log10(1 + params.doCount) * 1000 /5",
        "params": {
          "termFreq": 1278,
          "titleDocFreq": 1274,
          "allDocFreq": 3630,
          "doCount": 3909828,
          "numDocs": 4492778,
          "maxDocs": 4497180
        }
      }
    }
  },
  // 剩余faithful、return、pray、mosques四个关键词的配置均按上述格式调整即可
]

调整后即可正常执行,原有评分逻辑、sum累加规则、boost_mode配置都不需要修改。

内容的提问来源于stack exchange,提问作者EdZ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 12:09:04