elasticsearch - 如何在定制聚合器的collect() 方法中按顺序收集文档?

  显示原文与译文双语对照的内容
0 0

我正在使用 1.3.4开发一个定制聚合器。 它从 NumericMetricsAggregator.MultiValue 类的代码结构与 Stats 聚合器的代码结构相似。 根据我的要求,我需要在重写的collect() 方法中以升序接收 doc id 。 对于大多数查询,我按升序获取 doc id 。 对于具有多个子句的boolshould 查询,有趣的是,我按降序获取 doc id ! 如何修复此问题? 这是 Bug?

时间:原作者:1个回答

0 0

我在github上问了同样的问题,得到了我的答案。 以下是解决方案:

你可以以调用 aggregationContext.ensureScoreDocsInOrder(); 以确保文档按顺序进行,在ReverseNestedAggregator中查找使用该方法的实例。

如果允许这样做,查询确实允许发出文档 out-of-order,如果它能使事情变得更快。 我相信当今发生的唯一情况是当你获得了用于顶层解析的lucene的BooleanScorer时,你的观察是有意义的。

链接到问题:https://github.com/elasticsearch/elasticsearch/issues/8216

原作者:
...