[Spring-Data-Elasticsearch] spring 버전업에 따른 update() 메소드 NPE 이슈

조갱·2022년 11월 27일
0

이슈 해결

목록 보기
6/14
post-thumbnail

Spring-boot 버전 업

Spring-boot 의 버전을 2.3.4 RELEASE -> 2.7.3 으로 업데이트 했다.
이에 따라, Spring-Data-Elasticsearch 의 버전도 4.0.4 -> 4.4.2 로 업데이트 됐다.
elasticsearch-sources.jar 도 7.6.2 -> 7.17.4 업데이트 됐다.

에러 로그

기존 MySQL -> ES로 데이터를 옮기는 마이그레이션 배치를 실행 중에 에러 로그가 올라왔다.
로그를 찍어보니
NPE네!

스프링 버전업은 예전에 했는데,,

스프링 버전업은 예전부터 했기 때문에, 이미 에러가 발생했어야 했다.
하지만 지금까지 마이그레이션은 (아직 버전업이 적용되지 않은) 브랜치에서 수행했기 때문에, 에러가 발생하지 않았다.

그래서 해결방법은?

라이브러리를 까보니 lang을 넣으라더라. 그래서 넣어줬더니 해결됐다.

이렇게!

Script.java 에서 요구하기를..

lang은 notnull 타입이어야 하는데

(스프링 버전업 전) spring-data-elasticsearch 4.0.4 에서 UpdateQuery.java 의 코드

(스프링 버전업 후) spring-data-elasticsearch 4.4.2 에서 UpdateQuery.java 의 코드

위 두 사진을 보면 알 수 있듯, 4.0.4에서는 lang이 default로 들어가지만, 4.4.2에서는 아니여서 에러가 발생했다.

그래서 lang에 뭘 넣어야 하는데?

기본적으로는 painless

더 많은 옵션은 이곳을 참고하세요.!

Reference
https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-scripting.html

profile
A fast learner.

0개의 댓글