현상
ES 6.3.1로 Transport Client를 테스트 하는데 아래와 같은 오류가 발생하였다.
여기서 이상한 점은 메이븐 의존성을 elasticsearch, rest-client, transport 모두 6.3.1로 설정했음에도 불구하고 transport-netty4-client를 5.6.10을 로드 시도한다는 것이다.
java.lang.ClassNotFoundException: org.elasticsearch.common.transport.InetSocketTransportAddress
Caused by: java.lang.NoSuchFieldError: Shared
at org.elasticsearch.http.netty4.Netty4HttpServerTransport.<clinit>(Netty4HttpServerTransport.java:124) ~[transport-netty4-client-5.6.10.jar:5.6.10]
해결
의존성을 안전하게 import하기 위해 아래와 같이 transport-netty4-client 까지 dependency를 설정하여 해결하였다.
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>${es.version}</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>transport</artifactId>
<version>${es.version}</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.plugin</groupId>
<artifactId>transport-netty4-client</artifactId>
<version>${es.version}</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>${es.version}</version>
</dependency>