개요
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
반응형
'[DEV] 기록' 카테고리의 다른 글
[Windows + Docker] Socket fail to connect to host:address=(host=localhost)(port= (0) | 2023.11.11 |
---|---|
[Spring Batch] EL1008E: Property or field 'jobParameters' cannot be found on object of type (0) | 2023.10.27 |
[Jackson 라이브러리] @JsonBackReference (0) | 2023.09.07 |
[Spring Data Jpa] java.lang.StackOverflowError (0) | 2023.09.04 |
[Mac] 맥북에서 MAC 주소 확인하는 방법 (2) | 2023.08.31 |