Spring

java.lang.NoSuchFieldError: IGNORE_DEPRECATIONS를 유발하는 Elastic Search를 사용한 Spring Boot

기록만이살길 2022. 12. 9. 16:57
반응형

java.lang.NoSuchFieldError: IGNORE_DEPRECATIONS를 유발하는 Elastic Search를 사용한 Spring Boot

1. 질문(문제점):

Elastic search를 처음 사용합니다. 탄력적 검색으로 Spring 부트 애플리케이션 구축을 시작했습니다.

최신 ES 버전 "elasticsearch-7.7.1"을 사용하고 통합을 위해 아래 maven 의존성을 사용하고 있습니다.

    <dependency>
        <groupId>org.elasticsearch.client</groupId>
        <artifactId>elasticsearch-rest-high-level-client</artifactId>
        <version>7.7.1</version>
    </dependency>

내 스프링 부트 앱에 아래 구성을 추가했습니다.

@Configuration
public class ESConfig {

  @Bean(destroyMethod = "close")
  public RestHighLevelClient client() {
    RestHighLevelClient restHighLevelClient = new RestHighLevelClient(
        RestClient.builder(new HttpHost("localhost")));
    return restHighLevelClient;
  }

}

application.yaml에 아래 속성 추가

elasticsearch:
  host: localhost

응용 프로그램 시작 시 예외 아래에 있음:

Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.elasticsearch.client.RestHighLevelClient]: Factory method 'client' threw exception; nested exception is java.lang.NoSuchFieldError: IGNORE_DEPRECATIONS
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185)
    at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:622)
    ... 19 common frames omitted
Caused by: java.lang.NoSuchFieldError: IGNORE_DEPRECATIONS
    at org.elasticsearch.client.RestHighLevelClient.<clinit>(RestHighLevelClient.java:1902)
    at com.sbs.communicationcontrol.search.config.ESConfig.client(ESConfig.java:14)

아무도이 예외가 발생한 이유를 도와 주시겠습니까?

2. 해결방안:

약간의 R&D 후 아래 두 가지 의존성을 추가하여 문제를 해결했습니다.

        <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>elasticsearch-rest-client</artifactId>
            <version>7.7.1</version>
        </dependency>

        <dependency>
            <groupId>org.elasticsearch</groupId>
            <artifactId>elasticsearch</artifactId>
            <version>7.7.1</version>
        </dependency>
반응형