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

Elasticsearch嵌套dense_vector余弦相似度查询报Required [query]错误如何解决

排查解决思路

直接报错原因

script_score 查询语法要求必须包含一个基础query子句,你当前的写法缺失了该必填参数,这是触发Required [query]错误的核心原因。

其他隐藏问题

  • 字段名不匹配:你的mapping中dense_vector字段名为doc_vector,但查询脚本中写的是vector,字段对应错误会导致后续查询即使修复语法也取不到值。
  • nested上下文字段访问格式错误:nested查询内不能直接通过document_vectors.xxx的方式访问字段,需要使用doc['<字段全路径>']的格式取值。
  • 相似度分数兼容问题:cosineSimilarity的返回值范围为[-1,1],最好做偏移处理避免负分影响排序逻辑。

修正后的查询语句

{
    "size": results_size,
    "query": {
        "nested": {
            "path": "document_vectors",
            "score_mode": "max",
            "query": {
                "script_score": {
                    "query": {
                        "match_all": {}
                    },
                    "script": {
                        "source": "doc['document_vectors.doc_vector'].size() == 0 ? 0 : cosineSimilarity(params.query_vector, 'document_vectors.doc_vector') + 1.0",
                        "params": {"query_vector": query_vector}
                    }
                }
            }
        }
    }
}

额外验证点

  • 确保传入的query_vector维度与mapping中配置的768维完全一致
  • 如使用Elasticsearch 8.x版本,可直接使用knn查询语法替代script_score实现更高性能的向量检索

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 14:36:08