illegal_argument_exception_total_fields: Limit of total fields has been exceeded
ElasticsearchQue signifie cette erreur ?
Le nombre total de champs dans le mapping d'un index a dépassé la limite supérieure autorisée (index.mapping.total_fields.limit, 1000 par défaut). L'indexation échoue car de nouveaux champs ne peuvent pas être ajoutés.
Cause
Généralement une explosion du mapping : avec le dynamic mapping activé, des documents JSON non structurés/à clés variables (par ex. des objets dont les clés proviennent de données utilisateur) ajoutent chaque nouveau champ au mapping. Avec le temps, le nombre de champs augmente rapidement et atteint la limite.
Comment la corriger
Pour corriger la cause racine, modélisez les données à clés variables avec un champ flattened ou sous forme de tableau de paires clé-valeur plutôt que d'objets ; restreignez le dynamic mapping (dynamic: false ou strict). Si vous avez réellement besoin de plus de champs, relevez prudemment la limite : PUT idx/_settings {"index.mapping.total_fields.limit": 2000}. Surveillez l'explosion du mapping en vérifiant le nombre de champs avec GET idx/_mapping.
Autres entrées pour ce moteur
- shard_lock_obtain_failed_exceptionObtaining shard lock timed out
- parsing_exceptionFailed to parse the search request / query DSL (échec de l'analyse de la requête de recherche / du query DSL)
- max_bytes_length_exceeded_exceptionDocument contains at least one immense term that is too long (le document contient au moins un terme démesuré, trop long)
- verification_exceptionverification_exception: Found N problem(s) — Unknown column / Unknown index (ES|QL, SQL, EQL) (N problème(s) trouvé(s) — colonne / index inconnu)
- bind_transport_exceptionbind_transport_exception (Address already in use)
- translog_corrupted_exceptiontranslog_corrupted_exception
- recovery_engine_exceptionrecovery_engine_exception