too_many_buckets_exception: Trying to create too many buckets(作成しようとしたバケットが多すぎる)
Elasticsearch意味
集計クエリが許容上限 (search.max_buckets、デフォルト 65,536) を超えるバケットを生成しようとした。メモリを保護するためクエリが拒否された。
原因
カーディナリティの高いフィールドに対して非常に大きな size または非常に細かい interval で実行された terms/date_histogram などの集計、ネストした集計によるバケット数の増倍。過剰なバケット生成はノードのメモリを枯渇させ得るため、上限が強制される。
対処方法
生成されるバケット数を減らす: terms 集計の size を下げる、date_histogram の interval を広げる、不要なネストした集計を削除する。多数の結果が必要な場合は composite 集計でページングする。上限の引き上げは最後の手段であり、メモリのリスクを伴う: search.max_buckets は PUT _cluster/settings で変更できるが、慎重に行う。
同じデータベースの他の項目
- node_not_connected_exceptionNode is not connected(ノードが接続されていない)
- receive_timeout_transport_exceptionRequest timed out waiting for a response from another node(別のノードからの応答待ちで要求がタイムアウト)
- routing_missing_exceptionRouting value is required for this document(このドキュメントにはルーティング値が必要)
- shard_lock_obtain_failed_exceptionObtaining shard lock timed out(シャードロックの取得がタイムアウト)
- parsing_exceptionFailed to parse the search request / query DSL(検索要求 / query DSL の解析に失敗)
- max_bytes_length_exceeded_exceptionDocument contains at least one immense term that is too long(ドキュメントに長すぎる巨大な term が少なくとも 1 つ含まれる)
- illegal_argument_exception_total_fieldsLimit of total fields has been exceeded(フィールド総数の上限を超えた)