illegal_argument_exception_total_fields: Limit of total fields has been exceeded
ElasticsearchO 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.
Mais entradas deste banco
- shard_lock_obtain_failed_exceptionObtaining shard lock timed out
- parsing_exceptionFailed to parse the search request / query DSL (não foi possível interpretar a requisição de busca / o query DSL)
- max_bytes_length_exceeded_exceptionDocument contains at least one immense term that is too long (o documento contém pelo menos um termo enorme longo demais)
- verification_exceptionverification_exception: Found N problem(s) — Unknown column / Unknown index (ES|QL, SQL, EQL) (falha de verificação: coluna ou índice desconhecido)
- bind_transport_exceptionbind_transport_exception (Address already in use) (o endereço já está em uso)
- translog_corrupted_exceptiontranslog_corrupted_exception
- recovery_engine_exceptionrecovery_engine_exception