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..
'💾 데이터베이스(Database) > ElasticSearch' 카테고리의 다른 글
[ElasticSearch] REST API 요청과 사용 방법. (1) | 2023.10.07 |
---|---|
[ElasticSearch] ElasticSearch 기본 개념. (1) | 2023.10.07 |
[OpenSearch] OpenSearch란? (기본 사용법) (0) | 2023.08.25 |