DBAtlas · 데이터베이스 운영 아틀라스

too_many_buckets_exception: Trying to create too many buckets

Elasticsearch

의미

aggregation 쿼리가 허용 상한(search.max_buckets, 기본 65,536)보다 많은 bucket을 생성하려 했다. 메모리를 보호하기 위해 쿼리가 거부되었다.

원인

카디널리티가 높은 필드에서 매우 큰 size나 매우 세밀한 interval로 terms/date_histogram 같은 aggregation을 실행하거나, 중첩 aggregation이 bucket 수를 곱으로 늘리는 경우다. 과도한 bucket 생성은 노드 메모리를 고갈시킬 수 있으므로 한도가 적용된다.

해결 방법

생성되는 bucket 수를 줄인다: terms aggregation의 size를 낮추고, date_histogram interval을 넓히고, 불필요한 중첩 aggregation을 제거한다. 많은 결과가 필요하면 composite aggregation으로 페이지 단위로 조회한다. 한도를 높이는 것은 최후의 수단이며 메모리 위험이 따른다. search.max_buckets는 PUT _cluster/settings로 변경할 수 있지만 신중하게 한다.

DBAtlas에서 열기 →

같은 데이터베이스의 다른 항목