【发布时间】:2017-10-28 02:44:23
【问题描述】:
我们有具有以下字段的弹性搜索文档:
{
"stockId": 1
"sellerId": 100
}
多个stockId 可以映射到单个sellerId,但一个库存只能映射到一个dealer。大约有 10,000 只股票映射到 1,000 个卖家。但是每个 SellerId 可能有不同数量的股票,即少数可能有 100 个,而其他人只有 1 个。
问题陈述:我们想从所有这些被索引的文档中选择“N”个随机文档。条件是这些“N”文件中的每一个都应该属于不同的卖家,即不同的“sellerId”。 (我们需要奖励这些卖家)。
我尝试过的:我正在尝试通过获取“N”个随机不同“sellerId”的弹性查询来解决这个问题。 (然后弹性查询以获取每个“N”个卖家的 1 个文档)。一种方法是聚合“sellerId”,然后选择随机的“N”个键,但这在性能方面并不理想。有人可以帮助更好地查询吗?
【问题讨论】:
-
你真的需要在查询时这样做吗?这种数据存储的黄金法则是优化您的查询数据 - 您能否扩展您的问题的上下文,因为这可能是XY problem
-
我同意。我已经修改了原来的问题。
-
第一直觉 - 您可以维护不同卖家的单独列表(可能是另一个索引)并随机抽样(可能通过随机分数搜索)。不过可能有更直接的解决方案。
标签: elasticsearch