elasticsearch too_many_buckets_exceptions

Terms Aggregation 사용 중 데이터 건수가 늘어남에 따라 아래와 같은 에러가 발생

{
  "error": {
    "root_cause": [
      {
        "type": "too_many_buckets_exception",
        "reason": "Trying to create too many buckets. Must be less than or equal to: [10000] but was [10001]. This limit can be set by changing the [search.max_buckets] cluster level setting.",
        "max_buckets": 10000
      }
    ]
  }
}

원인은 elasticsearch 에 max_buckets default 값이 10,000개로 그 이상 bucket이 집계에 사용될 경우 위와 같이 에러를 발생
해결방법은 2가지로 Cluster update settings API를 이용하는 방법과 설정파일(elasticsearch.yml)에 설정하는 방법이 존재
첫번째 방법은 elasticsearch에 바로 반영이 가능 하나 elasticsearch 재기동시 초기화 되는 단점이 있으며
두번째 방법은 바로 반영이 불가능 하나 elasticsearch 재기동시 해당 설정이 영구적용됨

첫번째 방법으로 적용 후 두번째 방법으로 영구 설정하여 사용하기를 추천

해결방법

// [step 1] cluster update api를 이용하여 바로 반영
PUT _cluster/settings
{
  "persistent": {
    "search.max_buckets": "2147483647" // 원하는 설정값 입력
  }
}

// elasticsearch.yml 파일내 아래와 같이 삽입
search.max_buckets: 20000  // 원하는 설정값 입력

주의사항

buckets 사이즈를 무한정 늘리기엔 Elasticsearch Heap Memory 사용량과 비례 하기 때문에 해당 집계를 사용하는 데이터에 맞게 사이즈를 늘리는것을 추천