使用 knn 搜索增强 Elasticsearch 字段

问题描述 投票:0回答:1

我想在特定字段(在 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]?')

现在我知道语法有错误,但无法弄清楚它是什么,有人可以帮助我吗,谢谢!

python json elasticsearch elastic-stack
1个回答
0
投票

您可以将 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

希望这有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.