我有以下Map的索引:
{
"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]
}
}
弹性每次命中都会给我返回一个分数。问题是,我如何才能获得得分超过N
的数据?它知道min_score
,但无法将其应用于此查询。
1条答案
按热度按时间esyap4oy1#
自Elasticearch 8.4.0起,KNN Search API(
/_knn_search
)已集成到Search API(/_search
)中,我们可以按照以下文档使用min_score
选项: