【发布时间】:2016-03-11 18:32:15
【问题描述】:
我需要从 ElasticSearch 索引中获取一个随机样本,即发出一个查询,该查询从给定索引中检索一些具有加权概率Wj/ΣWi 的文档(其中Wj 是行j 和@987654326 的权重@ 是该查询中所有文档的权重之和)。
目前,我有以下查询:
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"}}]
}
它从选定的类别中随机返回 5 个项目。
每个项目都有一个字段weight。所以,我可能不得不使用
"script_score": {
"script": "weight = data['weight'].value / SUM; if (_score.doubleValue() > weight) {return 1;} else {return 0;}"
}
如here 所述。
我有以下问题:
- 这样做的正确方法是什么?
- 我需要启用Dynamic Scripting吗?
- 如何计算查询的总和?
非常感谢您的帮助!
【问题讨论】:
标签: elasticsearch random-sample weighted