[DEV] 기록

[elasticsearch] Limit of total fields [1000] in index has been exceeded

꾸준함. 2023. 9. 11. 17:42

개요

logstash를 통해 elasticsearch에 로그를 저장하는데 필드가 1,000개가 넘지 않는데도 불구하고 간헐적으로 아래와 같은 에러 메시지가 발생했습니다.

 

Limit of total fields [1000] in index has been exceeded

 

원인

로그로 쌓는 데이터 중 HashMap 형태의 데이터들이 있었는데 해당 field에 대한 매핑 정보를 그대로 저장할 경우 map에 포함된 각각의 key가 필드로 매핑되어 파라미터의 개수와 필드 개수가 정비례하면서 발생하는 문제였습니다.

 

해결 방법

굳이 Map 형태로 로그를 쌓을 필요가 없어 toString 메서드를 오버로딩하여 문자열 형태로 저장하는 방식으로 해결했습니다.

 

물론 아래와 같이 필드 제한 개수를 늘리는 방법을 선택할 수도 있지만 이런 방법을 선택할 경우 es의 성능 저하로 이어질 수 있기 때문에 인프라 담당자와 논의 후 늘리는 것을 추천드립니다.

 

PUT test_index/_settings
{
  "index.mapping.total_fields.limit": 2000
}

 

참고

https://kimyhcj.tistory.com/entry/Limit-of-total-fields-1000-in-index-has-been-exceeded

 

Limit of total fields [1000] in index has been exceeded

특정 document 를 저장하는데 아래와 같은 오류가 발생한다. Limit of total fields [1000] in index has been exceeded 말 그대로 하나의 index 에 1,000 개 이상의 fields 를 저장할 수 없다는 말인데 이상하다... field

kimyhcj.tistory.com

 

반응형