max_bytes_length_exceeded_exception: Document contains at least one immense term that is too long
ElasticsearchNe demek?
İndekslenmeye çalışılan bir belgede, bir terim (özellikle keyword/analiz edilmemiş bir alan değeri) izin verilen maksimum bayt uzunluğunu (32766 bayt) aştı. Lucene bu kadar uzun bir terimi indeksleyemez.
Neden olur?
Çok uzun bir metin değerinin keyword tipi bir alana (tam metin olarak) yazılması; ör. tüm bir belge gövdesinin, base64 verinin ya da uzun bir URL/kimliğin keyword alanına konması. keyword alanları analiz edilmediğinden değer tek bir terim olarak indekslenir ve sınırı aşar.
Nasıl çözülür?
Uzun metin için text tipi (analiz edilen) alan kullanın; keyword yalnızca kısa, tam eşleşme gereken değerler içindir. Değeri kısaltmak istiyorsanız mapping'de ignore_above ayarını kullanın (bu uzunluğu aşan değerler indekslenmez ama saklanır). Gerekmiyorsa çok uzun alanları index:false yapın. Alan tasarımını (text vs keyword) veri türüne göre yeniden değerlendirin.
Aynı motorda diğer kayıtlar
- 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
- 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)
- bind_transport_exceptionbind_transport_exception (Address already in use)
- translog_corrupted_exceptiontranslog_corrupted_exception