elasticsearch 在嵌套余弦相似性查询上获取RequestError(400,'非法参数异常','必需的[查询

0md85ypi  于 2022-11-02  发布在  ElasticSearch
关注(0)|答案(1)|浏览(195)

我的索引中有一个Map,如下所示:

"document_vectors": {
        "type": "nested",
        "properties": {
          "doc_vector": {
            "type": "dense_vector",
            "dims": 768
          }
        }
      }

这表示一个向量数组,这些向量与索引中的特定文档相关联。我想查询这个向量数组的余弦相似度,如下所示:

{
    'size': results_size,
    'query': {
        "nested": {
            "path": "document_vectors",
            "score_mode": "max",
            "query": {
                "script_score": {
                    "script": {
                        "source": "document_vectors.vector.size() == 0 ? 0 : cosineSimilarity(params.query_vector, document_vectors.vector)",
                        "params": {"query_vector": query_vector}
                    }
                }
            }
        }
    }

尝试此查询时出现以下错误(此索引上的其他查询正常工作,但尝试此特定查询时出现错误):
请求错误(400,'非法参数异常','必需的[查询]')
我不知道如何解释这个错误-我是否在某个地方遗漏了“查询”字段?如果有帮助的话,我改编了this Stackoverflow post中的查询/Map。

wkyowqbh

wkyowqbh1#

我也遇到了同样的问题。“script_score”似乎需要在其中包含一个“query”字段。
于是我又道:

"query": {
          "match_all": {}
        }

在“脚本”字段上方,这似乎工作得很好。我正在关闭https://opensearch.org/docs/latest/search-plugins/knn/knn-score-script/以供参考。
以下是我的整体查询结构:

myscript = #<code to make the 'painless' script>

query = {
    "size": 5,
    "query": {
      "script_score": {
        "query": {
          "match_all": {}
        },
        "script": myscript 
      }
    }

}
 response = os.search(
     body = query,
     index = index_name
 )

希望能有所帮助

相关问题