illegal_argument_exception_total_fields: Limit of total fields has been exceeded(已超出字段总数限制)
Elasticsearch含义
索引映射中的字段总数超过了允许的上限(index.mapping.total_fields.limit,默认 1000)。由于无法添加新字段,索引失败。
原因
通常是映射爆炸:在启用动态映射时,非结构化/键可变的 JSON 文档(例如键来自用户数据的对象)会将每个新字段都加入映射。随着时间推移字段数迅速增长,直至达到限制。
解决方法
要解决根本原因,用 flattened 字段或键值对数组(而非对象)来建模键可变的数据;限制动态映射(dynamic: false 或 strict)。如果确实需要更多字段,谨慎提高限制:PUT idx/_settings {"index.mapping.total_fields.limit": 2000}。用 GET idx/_mapping 检查字段数,以监控映射爆炸。
同一数据库的其他条目
- shard_lock_obtain_failed_exceptionObtaining shard lock timed out(获取分片锁超时)
- parsing_exceptionFailed to parse the search request / query DSL(无法解析搜索请求/query DSL)
- max_bytes_length_exceeded_exceptionDocument contains at least one immense term that is too long(文档中至少包含一个过长的超大词项)
- verification_exceptionverification_exception: Found N problem(s) — Unknown column / Unknown index (ES|QL, SQL, EQL)(验证异常:发现 N 个问题 —— 未知列/未知索引)
- bind_transport_exceptionbind_transport_exception (Address already in use)(地址已被占用)
- translog_corrupted_exceptiontranslog_corrupted_exception
- recovery_engine_exceptionrecovery_engine_exception