특정 document 를 저장하는데 아래와 같은 오류가 발생한다.
Limit of total fields [1000] in index has been exceeded
말 그대로 하나의 index 에 1,000 개 이상의 fields 를 저장할 수 없다는 말인데
이상하다... field 를 이렇게 많이 사용하고 있지 않은데 왜 이런 오류가 발생하지?
저장하는 데이터 중 paramList 라는 데이터를 Map 형태로 저장하고 있고
해당 field 에 대한 mapping 정보를 임의로 지정하지 않았더니
value 에 해당하는 map - (key: parameter key, val: parameter value) 에 포함된 각각의 key 가 field 로 mapping 되어
parameter 가 늘어날 수록 (누적) field 가 추가되는 현상이 발생한 것이다.
paramList 에 대한 mapping 정보를 text, keyword(with ignore_aobve) 로 지정하고
parameter 정보를 text 로 저장하고 keyword 로 지정하여 map 을 그대로 이용하지 않고 key=val&key=val 형태로 만들어 저장하도록 수정하여 문제를 해결했다.
P.S
max size 를 조정할 수도 있겠지만 일단 저장하는 정보 자체가 의도하지 않은 상태로 매핑된 것 이기 때문에 max size 를 늘릴 필요가 없었고, max size 를 늘릴 경우 elasticsearch 의 성능 문제 (메모리 등)로 이어질 수 있기 때문에 함부로 조정하는 것은 좋지 않다.
'IT > Elasticsearch' 카테고리의 다른 글
Elasticsearch / Opensearch 에서 Like 검색하기 (0) | 2024.10.22 |
---|---|
Result window is too large... index.max_result_window (0) | 2022.08.23 |
Elasticsearch Mappings - Nested type (0) | 2022.06.23 |
Elasticsearch - Aggregation - extended_stats (0) | 2020.09.15 |
Elasticsearch - Aggregation - date historgram (0) | 2020.09.15 |