我需要从ElasticSearch指数获得了随机抽样,即发出检索来自加权概率给定索引一些文档的查询Wj/?Wi(这里Wj是行的权重j,并Wj/?Wi在此查询所有文件的权重的总和).
目前,我有以下查询:
GET products/_search?pretty=true
{"size":5,
"query": {
"function_score": {
"query": {
"bool":{
"must": {
"term":
{"category_id": "5df3ab90-6e93-0133-7197-04383561729e"}
}
}
},
"functions":
[{"random_score":{}}]
}
},
"sort": [{"_score":{"order":"desc"}}]
}
Run Code Online (Sandbox Code Playgroud)
它随机返回所选类别中的5个项目.每个项目都有一个字段weight.所以,我可能不得不使用
"script_score": {
"script": "weight = data['weight'].value / SUM; if (_score.doubleValue() > weight) {return 1;} else {return 0;}"
}
Run Code Online (Sandbox Code Playgroud)
作为描述在这里.
我有以下问题:
非常感谢你的帮助!