我想在特定字段(在 ipython 笔记本上)上实现弹性 knn 搜索,并且我的数据还包含评级(从 1 到 5),我也想将其考虑在内,因此我正在实现功能提升如下:
query = {
"field" : "DescriptionVector",
"query_vector": vector_of_input_keyword,
"k": 2,
"num_candidates": 500,
"boosts": [
{
"type": "functional",
"operation": "multiply",
"factor": 0.1,
"function": {
"field": "Ratings"
}
}
]
}
res = es.search(index="all_products", knn=query, _source=["ProductName", "Description"])
但是,上面的代码给出了一个错误: BadRequestError(400, 'x_content_parse_exception', '[1:16260] [knn] 未知字段 [boosts] 你的意思是 [boost]?')
现在我知道语法有错误,但无法弄清楚它是什么,有人可以帮助我吗,谢谢!
您可以将 knn 与常规查询结合起来进行混合搜索,但您可以将两者分开。 请参阅此处的文档;这个例子:
"query": {
"match": {
"title": {
"query": "mountain lake",
"boost": 0.9
}
}
},
"knn": {
"field": "image-vector",
"query_vector": [54, 10, -2],
"k": 5,
"num_candidates": 50,
"boost": 0.1
},
"size": 10
希望这有帮助!