相关疑难解决方法(0)

Elasticsearch中的加权随机抽样

我需要从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)

作为描述在这里.

我有以下问题:

  • 这样做的正确方法是什么?
  • 我是否需要启用Dynamic Sc​​ripting
  • 如何计算查询的总和?

非常感谢你的帮助!

random-sample weighted elasticsearch

9
推荐指数
1
解决办法
1299
查看次数

标签 统计

elasticsearch ×1

random-sample ×1

weighted ×1