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

时间:2014-10-22 21:28:54

标签: elasticsearch aggregation

我正在使用ES 1.3.4开发自定义聚合器。它从NumericMetricsAggregator.MultiValue类扩展而来。它的代码结构与Stats聚合器的代码结构非常相似。根据我的要求,我需要在重写的collect()方法中按升序接收doc ID。对于大多数查询,我确实按升序获得了文档ID。有趣的是,对于具有多个子句的bool should个查询,我按降序获得了文档ID!我怎样才能解决这个问题?这是一个错误吗?

1 个答案:

答案 0 :(得分:0)

我在github上问了同样的问题并得到了对我有用的答案。这是解决方案:

  

您可以调用aggregationContext.ensureScoreDocsInOrder();确保;确定   文档将按顺序进行,例如查看   ReverseNestedAggregator使用此方法。

     

如果允许,确实允许查询无序地发出文档   这样做,如果它使事情更快。我相信唯一的情况   今天发生的是当你使用Lucene的BooleanScorer时   对于顶级分离,所以你的观察是有道理的。

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