elasticsearch,Python,elasticsearch" /> elasticsearch,Python,elasticsearch" />

Python Elasticsearch DocumentCompliance dense_vector为参数'获取了多个值;车身';

Python Elasticsearch DocumentCompliance dense_vector为参数'获取了多个值;车身';,python,elasticsearch,Python,elasticsearch,我想将文档向量存储在Elasticsearch索引中,以便计算文档相似度。我正在使用用于Elasticsearch 7.8.0的Python客户端 我有一个(虚拟)Elasticsearch索引,具有以下映射: mapping = { "mappings": { "properties": { "title_vector":{ "type"

我想将文档向量存储在Elasticsearch索引中,以便计算文档相似度。我正在使用用于Elasticsearch 7.8.0的Python客户端

我有一个(虚拟)Elasticsearch索引,具有以下映射:

mapping = {
    "mappings": {
        "properties": {
            "title_vector":{
                "type": "dense_vector",
                "dims": 3
            }
        }
    }
}
   
es.indices.create(index="test_vector", body=mapping)
我以如下方式存储了一组向量:

vectors = [[1,2,3],[2,2,2],[1,2,2],[2,2,2],[4,5,6],[1,1,1]]

for i, v in enumerate(vectors):
    doc = {"title_vector": v}
    es.create("test_vector", id=i, body=doc)
根据,我要获得最相似文档的查询应如下所示:

doc = {
    "query": {
    "script_score": {
        "query": {
            "match_all": {}
        },
        "script": {
            "source": "cosineSimilarity(params.queryVector, 'title_vector') + 1.0",
            "params": {
                "queryVector": [1,1,1]
            }
        }
    }
}}

es.search("test_vector", body=doc)
但是我越来越

TypeError: search() got multiple values for argument 'body'
它看起来更像是Python错误,而不是弹性错误。但我无法真正找到错误的原因,以及如何以不同的方式构造查询以解决它

提前谢谢


编辑:添加了Elasticsearch版本

您是正确的,这是一个python错误。下面是如何根据此定义
es.search

如您所见,第一个参数是
body

请注意您的
es.search
,您没有在第一个参数中指定
,即
正文、索引、参数、标题
。因此,python根据上述方法声明将其解释为
body
的值

只需在第一个参数中添加
index=“test\u vector”
,而不是只添加
“test\u vector”
,就可以了

es.search(index="test_vector", body=doc)

希望有帮助

工作起来很有魅力。谢谢
es.search(index="test_vector", body=doc)