📣 极限科技诚招搜索运维工程师(Elasticsearch/Easysearch)- 全职/北京 👉 : 立即申请加入

版本: 7.9-7.15

简要说明 #

简而言之,当 Elasticsearch 尝试收集超过系统设定限制的桶(buckets)数量时,就会发生此错误。这可能是由于存在大量的索引,每个索引又包含多个分片导致的。

要解决此问题,你可以通过调整 Elasticsearch 配置中的 action.search.shard_count.limit 设置来增加限制。或者,你可以通过合并索引或减少每个索引的分片数量来减少分片总数。

日志上下文 #

日志 “Can’t collect more than [” 的类名是 BucketsAggregator.java。我们从 Elasticsearch 源代码中提取了以下内容,供那些需要深入了解上下文的用户参考:

final long bucketCount = bucketOrds.bucketsInOrd(owningBucketOrds[ordIdx]);
 bucketsInOrd[ordIdx] = (int) bucketCount;
 totalOrdsToCollect += bucketCount;
 }
 if (totalOrdsToCollect > Integer.MAX_VALUE) {
 throw new AggregationExecutionException("Can't collect more than [" + Integer.MAX_VALUE
 + "] buckets but attempted [" + totalOrdsToCollect + "]");
 }
 long[] bucketOrdsToCollect = new long[(int) totalOrdsToCollect];
 int b = 0;
 for (int ordIdx = 0; ordIdx < owningBucketOrds.length; ordIdx++) {