DBAtlas · 데이터베이스 운영 아틀라스

illegal_argument_exception_total_fields: Limit of total fields has been exceeded

Elasticsearch

의미

인덱스 매핑의 전체 필드 수가 허용 상한(index.mapping.total_fields.limit, 기본 1000)을 초과했다. 새 필드를 추가할 수 없어 인덱싱이 실패한다.

원인

보통 mapping explosion이다. dynamic mapping이 활성화된 상태에서 비정형/가변 키 JSON 문서(예: 키가 사용자 데이터에서 오는 객체)가 새 필드를 모두 매핑에 추가한다. 시간이 지나면서 필드 수가 빠르게 늘어 한도에 도달한다.

해결 방법

근본 원인을 해결하려면 가변 키 데이터를 객체 대신 flattened 필드나 key-value 쌍 배열로 모델링하고, dynamic mapping을 제한한다(dynamic: false 또는 strict). 정말 더 많은 필드가 필요하다면 한도를 신중히 높인다: PUT idx/_settings {"index.mapping.total_fields.limit": 2000}. GET idx/_mapping으로 필드 수를 확인해 mapping explosion을 모니터링한다.

DBAtlas에서 열기 →

같은 데이터베이스의 다른 항목