我正在使用ES 1.3.4开发自定义聚合器。它从NumericMetricsAggregator.MultiValue
类扩展而来。它的代码结构与Stats
聚合器的代码结构非常相似。根据我的要求,我需要在重写的collect()
方法中按升序接收doc ID。对于大多数查询,我确实按升序获得了文档ID。有趣的是,对于具有多个子句的bool
should
个查询,我按降序获得了文档ID!我怎样才能解决这个问题?这是一个错误吗?
答案 0 :(得分:0)
我在github上问了同样的问题并得到了对我有用的答案。这是解决方案:
您可以调用aggregationContext.ensureScoreDocsInOrder();确保;确定 文档将按顺序进行,例如查看 ReverseNestedAggregator使用此方法。
如果允许,确实允许查询无序地发出文档 这样做,如果它使事情更快。我相信唯一的情况 今天发生的是当你使用Lucene的BooleanScorer时 对于顶级分离,所以你的观察是有道理的。
问题的链接:https://github.com/elasticsearch/elasticsearch/issues/8216