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

max_bytes_length_exceeded_exception: Document contains at least one immense term that is too long (너무 긴 거대한 term이 문서에 포함됨)

Elasticsearch

의미

인덱싱 중인 문서에서 term(특히 keyword/분석되지 않는 필드 값)이 허용 최대 바이트 길이(32766바이트)를 초과했다. Lucene은 그렇게 긴 term을 인덱싱할 수 없다.

원인

매우 긴 텍스트 값을 keyword 필드에 (통째로) 쓴 경우다. 예: 문서 본문 전체, base64 데이터, 긴 URL/식별자를 keyword 필드에 넣은 경우. keyword 필드는 분석되지 않으므로 값이 단일 term으로 인덱싱되어 한도를 초과한다.

해결 방법

긴 텍스트에는 text(분석) 필드를 사용한다. keyword는 정확한 일치가 필요한 짧은 값 전용이다. 값을 제한하려면 매핑에 ignore_above를 사용한다(이보다 긴 값은 인덱싱되지 않지만 저장은 된다). 필요 없다면 매우 긴 필드를 index:false로 설정한다. 데이터 유형에 따라 필드 설계(text vs keyword)를 재검토한다.

DBAtlas에서 열기 →

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