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