illegal_argument_exception_total_fields: Limit of total fields has been exceeded
ElasticsearchWas bedeutet das?
Die Gesamtzahl der Felder in einem Index-Mapping hat die erlaubte Obergrenze überschritten (index.mapping.total_fields.limit, Standard 1000). Die Indizierung schlägt fehl, weil keine neuen Felder hinzugefügt werden können.
Ursache
Meist eine Mapping Explosion: Bei aktiviertem Dynamic Mapping fügen unstrukturierte JSON-Dokumente mit variablen Schlüsseln (z. B. Objekte, deren Schlüssel aus Benutzerdaten stammen) jedes neue Feld dem Mapping hinzu. Mit der Zeit wächst die Feldanzahl rasch und erreicht das Limit.
Lösung
Um die Grundursache zu beheben, modelliere Daten mit variablen Schlüsseln mit einem flattened-Feld oder als Array von Schlüssel-Wert-Paaren statt als Objekte; schränke Dynamic Mapping ein (dynamic: false oder strict). Brauchst du wirklich mehr Felder, erhöhe das Limit mit Bedacht: PUT idx/_settings {"index.mapping.total_fields.limit": 2000}. Überwache Mapping Explosions, indem du die Feldanzahl mit GET idx/_mapping prüfst.
Weitere Einträge zu dieser Datenbank
- 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