생계유지형 개발자/Stack Over Flow 한국판

[Elasticsearch] Exception in thread "main" java.lang.NoSuchMethodError: org.elasticsearch.action.support.IndicesOptions.ignoreThrottled()Z

이 가을 2020. 11. 12. 13:24

# 오류

java 프로젝트에서 엘라스틱서치에 연동하기 위해 elasticsearch-rest-high-level-client 라이브러리를 사용했다.

기존에 transport:6.0.0 버전을 사용했고 엘라스틱서치 설치 버전을 올리면서 클라이언트도 버전을 올리게 되었다.

연동하려는 elasticsearch의 노드가 총 7개이고 설치된 버전이 6.8 또는 7.9 이다.

연동 가이드 문서를 따라서 구현을 했는데 소스코드를 실행하면 클라이언트 객체 초기화하는 부분에서 다음과 같은 에러가 난다.

Exception in thread "main" java.lang.NoSuchMethodError: org.elasticsearch.action.support.IndicesOptions.ignoreThrottled()Z
at org.elasticsearch.client.RequestConverters$Params.withIndicesOptions(RequestConverters.java:966)
at org.elasticsearch.client.RequestConverters.addSearchRequestParams(RequestConverters.java:417)
at org.elasticsearch.client.RequestConverters.search(RequestConverters.java:404)
at org.elasticsearch.client.RestHighLevelClient.lambda$search$2(RestHighLevelClient.java:932)
at org.elasticsearch.client.RestHighLevelClient.internalPerformRequest(RestHighLevelClient.java:1450)
at org.elasticsearch.client.RestHighLevelClient.performRequest(RestHighLevelClient.java:1424)
at org.elasticsearch.client.RestHighLevelClient.performRequestAndParseEntity(RestHighLevelClient.java:1394)
at org.elasticsearch.client.RestHighLevelClient.search(RestHighLevelClient.java:930)

2번째 줄의 RequestConverter.java: 966 부분에 가면 ignoreThrottled() 부분이 붉은색으로 되어있다.

# 원인

라이브러리 버전 별로 뭐가 다른가본데 잘 모르겠다.

elasticsearch-rest-high-level-client 라이브러리의  Git 저장소에서 commit 기록을 보니 ignoreThrottled()가 추가된게 May, 2019 이길래 다시 메이븐 저장소 가서 2019년 5월 이전에 배포된 버전을 찾아보니 6.8.0 버전 뿐이었다.

6.8.1 버전이 Jun, 2019 였던 것 같다.

 

https://github.com/elastic/elasticsearch/pull/42393

 

Added param ignore_throttled=false when indicesOptions.ignoreThrottle… by kfuksman · Pull Request #42393 · elastic/elasticse

closes #42358

github.com

https://mvnrepository.com/artifact/org.elasticsearch.client/elasticsearch-rest-high-level-client

 

Maven Repository: org.elasticsearch.client » elasticsearch-rest-high-level-client

Elasticsearch subproject :client:rest-high-level VersionRepositoryUsagesDate7.9.x7.9.3Central6Oct, 20207.9.2Central11Sep, 20207.9.1Central17Sep, 20207.9.0Central15Aug, 20207.8.x7.8.1Central12Jul, 20207.8.0Central18Jun, 20207.7.x7.7.1Central12Jun, 20207.7.0

mvnrepository.com

# 해결

Git 커밋키록을 확인하기 전에는 elasticsearch-rest-high-level-client의 버전을 6.8.13, 6.8.12, 6.8.8 순서로 점점 낮춰서 확인했는데 모두 안 되었다.

그리고 나서 커밋키록 확인하고 6.8.0으로 변경했는데 되었다. ㅋ

    /** elasticsearch high-level Java REST (new) */
    compile('org.elasticsearch.client:elasticsearch-rest-high-level-client:6.8.0')