illegal_argument_exception_total_fields: Limit of total fields has been exceeded
ElasticsearchNe demek?
Bir index'in mapping'indeki toplam alan sayısı, izin verilen üst sınırı (index.mapping.total_fields.limit, varsayılan 1000) aştı. Yeni alanlar eklenemediği için indeksleme başarısız olur.
Neden olur?
Genellikle mapping explosion: dynamic mapping açıkken, yapılandırılmamış/değişken anahtarlı JSON belgelerinin (ör. anahtarları kullanıcı verisinden gelen nesneler) her yeni alanı mapping'e eklemesi. Zamanla alan sayısı hızla artarak sınıra dayanır.
Nasıl çözülür?
Kök nedeni çözmek için değişken anahtarlı verileri flattened tipi alanla ya da nesne yerine anahtar-değer dizisiyle modelleyin; dynamic mapping'i kısıtlayın (dynamic: false ya da strict). Gerçekten daha fazla alan gerekiyorsa limiti dikkatle artırın: PUT indeks/_settings {"index.mapping.total_fields.limit": 2000}. Mapping explosion'ı izlemek için GET indeks/_mapping ile alan sayısını denetleyin.
Aynı motorda diğer kayıtlar
- shard_lock_obtain_failed_exceptionObtaining shard lock timed out
- parsing_exceptionFailed to parse the search request / query DSL
- max_bytes_length_exceeded_exceptionDocument contains at least one immense term that is too long
- 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
- recovery_engine_exceptionrecovery_engine_exception