排序

时间:2015-08-11 10:16:24

标签: elasticsearch

我正在寻找一个实际返回特定查询结果的前10%的设置。在结果之后,我们还想对子集进行排序。

有一种简单的方法吗?

任何人都可以为此提供一个简单的例子。 我正在考虑将结果分数在0和1.0之间进行缩放,并且基本上将min_score分成0.9。

我正在尝试创建function_score查询但是对于像这样的简单要求来说这些看起来有点复杂,而且我不确定排序会如何影响结果,因为我希望排序函数始终在10%以上工作相关文章当然。

谢谢, 彼得

1 个答案:

答案 0 :(得分:1)

由于您希望以总体文档计数的百分比来切片响应,无论如何您都需要知道。使用from / size参数将在查询时切断所需的金额。

假设这一点,似乎实现目标的最简单方法是进行2次查询:

  1. 使用所有过滤器过滤查询,无需查询和search_type=count以获取整体文档数。
  2. 执行常规匹配查询,在第一次回复时使用 count 应用{"from": 0, "size": count/10}
  3. 谈论调整得分。对我来说,这似乎是个坏主意,因为获得具有相同分数的多个文档是相当普遍的情况。因此,按min_score切割数据集可能会导致数据偏斜。

相关问题