max_bytes_length_exceeded_exception: Document contains at least one immense term that is too long(ドキュメントに長すぎる巨大な term が少なくとも 1 つ含まれる)
Elasticsearch意味
インデックス作成中のドキュメントで、ある term (特に keyword/非解析フィールドの値) が許容される最大バイト長 (32766 バイト) を超えた。Lucene はそれほど長い term をインデックス化できない。
原因
keyword フィールドに (全体として) 書き込まれた非常に長いテキスト値。例: ドキュメント本文全体、base64 データ、長い URL/識別子を keyword フィールドに格納した。keyword フィールドは解析されないため、値は単一の term としてインデックス化され上限を超える。
対処方法
長いテキストには text (解析対象) フィールドを使用する。keyword は完全一致が必要な短い値専用である。値に上限を設けるには、マッピングで ignore_above を使用する (これより長い値はインデックス化されないが格納はされる)。不要であれば、非常に長いフィールドを index:false に設定する。データ型に基づいてフィールド設計 (text と keyword) を見直す。
同じデータベースの他の項目
- too_many_buckets_exceptionTrying to create too many buckets(作成しようとしたバケットが多すぎる)
- shard_lock_obtain_failed_exceptionObtaining shard lock timed out(シャードロックの取得がタイムアウト)
- parsing_exceptionFailed to parse the search request / query DSL(検索要求 / query DSL の解析に失敗)
- illegal_argument_exception_total_fieldsLimit of total fields has been exceeded(フィールド総数の上限を超えた)
- verification_exceptionverification_exception: Found N problem(s) — Unknown column / Unknown index (ES|QL, SQL, EQL)(検証例外: N 件の問題 — 不明な列 / 不明なインデックス)
- bind_transport_exceptionbind_transport_exception (Address already in use)(アドレスは既に使用中)
- translog_corrupted_exceptiontranslog_corrupted_exception