illegal_argument_exception_total_fields: Limit of total fields has been exceeded
Elasticsearch¿Qué significa?
El número total de campos del mapping de un índice superó el límite superior permitido (index.mapping.total_fields.limit, 1000 por defecto). La indexación falla porque no se pueden añadir campos nuevos.
¿Por qué ocurre?
Normalmente es una explosión de mapping: con el dynamic mapping habilitado, los documentos JSON no estructurados/con claves variables (p. ej., objetos cuyas claves proceden de datos de usuario) añaden cada campo nuevo al mapping. Con el tiempo el número de campos crece rápidamente y alcanza el límite.
Cómo solucionarlo
Para corregir la causa raíz, modele los datos con claves variables con un campo flattened o como un array de pares clave-valor en lugar de objetos; restrinja el dynamic mapping (dynamic: false o strict). Si realmente necesita más campos, suba el límite con cuidado: PUT idx/_settings {"index.mapping.total_fields.limit": 2000}. Vigile la explosión de mapping revisando el número de campos con GET idx/_mapping.
Más entradas de este motor
- shard_lock_obtain_failed_exceptionObtaining shard lock timed out
- parsing_exceptionFailed to parse the search request / query DSL (no se pudo analizar la solicitud de búsqueda / el query DSL)
- max_bytes_length_exceeded_exceptionDocument contains at least one immense term that is too long (el documento contiene al menos un término enorme demasiado largo)
- verification_exceptionverification_exception: Found N problem(s) — Unknown column / Unknown index (ES|QL, SQL, EQL) (fallo de verificación: columna o índice desconocidos)
- bind_transport_exceptionbind_transport_exception (Address already in use) (la dirección ya está en uso)
- translog_corrupted_exceptiontranslog_corrupted_exception
- recovery_engine_exceptionrecovery_engine_exception