ElasticSearch 中的随机文档

标签 random elasticsearch statistics

有没有办法从 elasticsearch 索引中获取真正随机的样本?即查询以 1/N 的概率从索引中检索任何文档(其中 N 是当前索引的文档数)?

作为后续问题:如果所有文档都有一些数字字段s,有没有办法通过加权随机抽样来获取文档,即获取文档的概率i 的值 s_i 等于 s_i/sum(s_j for j in index)?

最佳答案

我知道这是一个老问题,但现在可以使用 random_score , 使用以下搜索查询:

{
   "size": 1,
   "query": {
      "function_score": {
         "functions": [
            {
               "random_score": {
                  "seed": "1477072619038"
               }
            }
         ]
      }
   }
}

对我来说,处理大约 200 万份文档非常快。

我使用当前时间戳作为种子,但你可以使用任何你喜欢的东西。最好的是,如果你使用相同的种子,你会得到相同的结果。因此,您可以使用用户的 session ID 作为种子,所有用户将有不同的顺序。

关于ElasticSearch 中的随机文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25887850/

相关文章:

arrays - Elasticsearch - 组合来自多个文档的字段

PHP 驱动的详尽统计数据 - 服务器端文本文件或 MySQL 表?

r - 创建一个带有循环方差分析结果的表 r

c++ - 使用 rand() 洗牌但没有洗牌

linux - 是否有随机数的系统调用?

java - 从Java Spark到ElasticSearch的连接数

c# - 如何计算协方差矩阵

java - 通过生成随机数根据百分比随机选择表格

javascript - 如何在 Javascript 中生成随机柔和(或更亮)的颜色?

elasticsearch - Elasticsearch没有返回我在搜索结果中期望的文档