我正在运行一个弹性搜索过滤器, (约1000万点击)的结果。我的from+size
max是默认值(10,000次点击)。我想基于一个字段进行聚合,并在所有桶中返回所有过滤器的匹配(而不仅仅是计数)。ES:Bucket agg + top_hits + scroll?如何在桶中返回所有命中(超过`size + from` max)?
我知道我可以使用top_hits
来获取每个存储桶中的实际文档(ElasticSearch: retriving documents belonging to buckets),但我认为我需要滚动以获取全部文档(以获得超过前10000个点击次数)。我可以滚动和聚合吗?当我使用聚合运行时,scroll
api失败。
目前,我有两个解决方案似乎都没有那么大:
运行多个过滤器的查询,表示各1桶(然后我不需要使用聚合+ top_hits命令)。 (对于我的应用程序太慢)
运行1个大的过滤器查询,并且不聚集,但使用滚动api获取所有匹配。然后,我将把它们放在我的主机上的相应桶中。 (不错,但好像ES设置用于聚集到这些水桶给我,有更多的资源来完成这项工作)
是否有更好的方法来解决这个问题?
这似乎与此有关:(Paging elasticsearch aggregation results)虽然滚动API没有提到(除非这就是他们所说的分页?)
每个存储桶中是否有超过10,000个文档?或者你有超过10,000个桶,并且想要翻阅这些桶? – jay
某些桶的命中次数超过10,000次。现在我正在看〜500桶。我的总点击量是1600万, – travelingbones