DBAtlas · Atlas d'exploitation des bases de données

illegal_argument_exception_total_fields: Limit of total fields has been exceeded

Elasticsearch

Que 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.

Ouvrir dans DBAtlas →

Autres entrées pour ce moteur