如何解决Elasticsearch中Index 128 out of bounds for length 128异常
Elasticsearch composite聚合嵌套top_hits数组越界问题解决方案
该array_index_out_of_bounds_exception: Index 128 out of bounds for length 128异常为Elasticsearch已知版本问题,触发条件为在composite聚合内部嵌套top_hits聚合,且匹配的嵌套文档数量触及ES内部默认的128位缓存槽位上限。
可通过以下方式解决:
- 显式限制top_hits返回数量:在top_hits聚合参数中显式设置
size为小于等于127的数值,避免触及默认上限,参考聚合语句如下:
{ "aggs": { "composite_agg": { "composite": { "sources": [ // 此处填写你的composite聚合源配置 ] }, "aggs": { "top_hits_agg": { "top_hits": { "size": 100, // 显式设置size小于128 "_source": ["*"] // 按需指定返回字段 } } } } } }
- 升级Elasticsearch版本:该bug已在7.17.10、8.6.0及以上正式版本修复,升级到对应版本后无需修改原有聚合逻辑即可正常执行。
- 拆分聚合逻辑:如果暂时无法升级且需要返回超过127条top_hits结果,可先单独执行composite聚合拿到所有桶的key值,再根据key值发起普通查询获取对应top_hits结果,避免嵌套触发异常。
内容的提问来源于stack exchange,提问作者shreyansh soni
相关产品推荐
相关产品推荐

