【发布时间】:2022-09-24 11:31:52
【问题描述】:
我有以下映射的索引:
{
\"test-2\": {
\"mappings\": {
\"properties\": {
\"advert_id\": {
\"type\": \"integer\"
},
\"fraud\": {
\"type\": \"boolean\"
},
\"photos\": {
\"properties\": {
\"id\": {
\"type\": \"integer\"
},
\"vector\": {
\"type\": \"dense_vector\",
\"dims\": 3,
\"index\": true,
\"similarity\": \"l2_norm\"
}
}
},
\"rating\": {
\"type\": \"long\"
}
}
}
}
}
以下是我的数据在 Elastic 中的保存方式:
{
\"advert_id\": 123,
\"fraud\": true,
\"photos\": [
{
\"id\": 456,
\"vector\": [
213.32,
3.23,
4.21
]
}
]
}
我想根据 KNN 算法搜索具有相似向量的数据。这是我的查询:
GET /test-2/_knn_search
{
\"knn\": {
\"field\": \"photos.vector\",
\"k\": 1,
\"num_candidates\": 5,
\"query_vector\": [213.32, 3.23, 4.22]
}
}
每次点击 Elastic 都会返回一个分数。问题是如何获得分数超过N 的数据?它知道min_score,但无法在此查询中应用它。
-
据我所知这是不可能的,但你可以试试
post_filter。我没有任何可用的 knn 正在运行的实例,因此无法验证它。 -
谢谢!但是,post_filter 里面应该有什么?是否可以访问 _score 字段?
-
我不确定,但您可以查看this 文档。
标签: elasticsearch knn