삽질일기

[Elasticsearch] auto_generate_synonyms_phrase_query = true error

키크니개발자 2022. 7. 31. 17:54

💡 코드가 보이지 않으시다면 드래그 혹은 오른쪽 아래 🌜 아이콘을 눌러 테마 색을 변경해주세요.

 

 

안녕하세요!

키크니 개발자 입니다. 🦒

 

최근 spring boot 1.5 버전에서 2.6으로 옮기는데 

같은 코드를 옮기는데에도 에러가 발생하여 기록으로 남겨두려고 합니다.

 

기존 프로젝트에서는 엘라스틱서치를 5버전대로 사용하였습니다.

현재는 스프링부트의 버전만 올린 상태로 프로젝트를 옮기는 것이었기 때문에 

일단 코드가 실행되게 해야됐습니다

 

에러는 아래와 같았습니다.

10:20:06.868 ERROR l.d.l.e.h.GlobalExceptionHandler - Internal Server Error.
java.lang.NullPointerException: 
Cannot invoke "com.google.gson.JsonObject.get(String)" because "obj" is null

디버깅을 해보니 기존 프로젝트와 다른 점은 auto_generate_synonyms_phrase_query가 true로 들어와서 에러가 발생하였습니다.

처음에는 해당 조건을 false로 하면 해결되지 않을까 싶어 false를 바꿔 실행시켰지만 같은 에러가 발생하였습니다.

 

auto_generate_synonyms_phrase_query는 다중 용어 동의어에 대한 일치 구문 쿼리가 자동으로 생성되는 것에 대한 설정이었습니다. 이는 true일 경우 실행되며, default도 true였습니다.

참고 url

 

이를 어떻게 해결해야 하나 하고 계속 검색한 결과 어떤 글을 발견했습니다.

같은 에러이며, 비슷한 상황이었습니다.

I ran into this issue when running Elasticsearch version 6.0
(offered by the AWS Elasticsearch Service).. 
I thought it would be okay to run the latest client (6.1.2),
but it turns out I actually needed to use the client version 6.0.0.

결론적으로는 엘라스틱서치 5에서는 auto_generate_synonyms_phrase_query를 지원하지 않기 때문에 
implementation 'org.elasticsearch:elasticsearch:5.3.0' 에서

implementation 'org.elasticsearch:elasticsearch:6.0.0'로 변경하니 해결되었습니다.

 

 

배워야 할 것이 더 많은 주니어 개발자입니다. 🐣
내용 전달보다는 정리를 목적으로 포스팅을 하고 있습니다.
잘못 된 내용이나 부족한 부분은 댓글로 주시면 감사드리겠습니다. 
반응형