DBAtlas · Atlas de operações de banco de dados

illegal_argument_exception_total_fields: Limit of total fields has been exceeded

Elasticsearch

O que significa?

O número total de campos no mapping de um índice excedeu o limite superior permitido (index.mapping.total_fields.limit, padrão 1000). A indexação falha porque não é possível adicionar novos campos.

Por que acontece?

Geralmente uma mapping explosion: com dynamic mapping habilitado, documentos JSON não estruturados/com chaves variáveis (por exemplo, objetos cujas chaves vêm de dados do usuário) adicionam cada novo campo ao mapping. Com o tempo, a quantidade de campos cresce rapidamente e atinge o limite.

Como resolver

Para corrigir a causa raiz, modele dados com chaves variáveis com um campo flattened ou como um array de pares chave-valor em vez de objetos; restrinja o dynamic mapping (dynamic: false ou strict). Se realmente precisar de mais campos, aumente o limite com cuidado: PUT idx/_settings {"index.mapping.total_fields.limit": 2000}. Monitore a mapping explosion verificando a quantidade de campos com GET idx/_mapping.

Abrir no DBAtlas →

Mais entradas deste banco