본문 바로가기
💾 데이터베이스(Database)/ElasticSearch

[ElasticSearch] 에러 노트

by inbeom 2024. 6. 16.
728x90
반응형

Elasticsearch 사용 중 발생한 에러를 정리하는 곳입니다.

 

Composite Parsing에러

에러 코드
- parsing_exception: Unknown key for a START_OBJECT in [composite_agg]: [nested_agg]
발생 원인
- 다중 집계(composite)문 안에서 nested를 직접적으로 사용하여 쿼리를 파싱할 때 에러 발생. 
해결 방법
-  nested를 composite 사용 전에 밖에서 미리 선언하면 된다. 이 방법을 사용하지 못할 경우 nested타입이 아닌 다른 필드를 찾는 방법 밖에 없다..
 
 

Text 타입 필드 집계 에러

에러 코드
- Fielddata is disabled on text fields by default 
- Cannot use aggregation on text fields without fielddata
발생 원인
- Elasticsearch에서는 집계나 정렬을 수행할 때 Fielddata구조를 사용하는데 기본적으로 text 타입 필드에 대해 fielddata를 비활성화 하기 때문에 문제가 발생한다.
해결 방법
-  해당 필드의 Fielddata를 활성화 해주거나 필드에 keyword 타입의 필드를 추가하여 keyword를 사용하여 집계할 수 있다.
(fielddata를 활성화하면 용량이 매우 커질 수 있으니 주의해야 한다.)
 
*Tip: 매핑 변경 후 리인덱싱을 해도 이미 생성된 데이터에 대해서는 적용 되지 않는다..  
 
 

검색 문서 Default 사이즈

에러 코드
- 에러는 아니고.. 분명 hits의 total 개수는 64개가 나오는데 실제로 조회된 내용(Document)은 10개만 나옴
발생 원인
- Elasticsearch에서 기본 검색 요청에서 반환되는 문서의 최대 개수는 10개로 설정되어 있다.
해결 방법
검색 요청 시 Query에 size를 지정해주면 된다. (size = 최대 검색 개수)
 
 

 SSL 인증 에러

에러 코드
- io.netty.handler.ssl.NotSslRecordException: not an SSL/TLS record
발생 원인
- Elasticsearch 서버가 SSL을 사용하도록 설정 되어있는데 클라이언트에서 SSL을 사용하지 않고 HTTP 연결을 시도하여 발생한다.
해결 방법
elasticsearch.properties 설정 파일에서 3가지를 변경해주고 Tomcat 재기동 하면 된다.

elasticsearch.scheme=https
elasticsearch.security.enabled=true
elasticsearch.hostname_verify=false

(*인증서를 사용하지 않을 때 cacert를 비워두면 실제로 인증서를 검사하지 않으며, verify=false 설정하여 인증서를 신뢰하지 않고도 연결할 수 있도록 한다.)

 
 
Continu to Update..

728x90
반응형