Elasticsearch TransportClient NetworkPlugin NoClassDefFoundError

Tim*_*eit 6 spring client transport elasticsearch spring-boot

我期待将Elasticsearch集成到Spring Boot Web应用程序中.以下是我创建传输客户端的配置:

@Configuration
public class ElasticsearchConfig {

private TransportClient client;

@Bean
public TransportClient client() throws UnknownHostException{

    Settings settings = Settings.builder()
            .put("client.transport.nodes_sampler_interval", "5s")
            .put("client.transport.sniff", false)
            .put("transport.tcp.compress", true)
            .put("cluster.name", "clusterName")
            .put("xpack.security.transport.ssl.enabled", true)
            .build();

    client = new PreBuiltTransportClient(settings);

    client.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("localhost"), 9300));

    return client;
}
Run Code Online (Sandbox Code Playgroud)

当我启动项目时,我得到以下错误,我不知道为什么:

java.lang.ClassNotFoundException: org.elasticsearch.plugins.NetworkPlugin
Run Code Online (Sandbox Code Playgroud)

我忘了添加依赖项吗?

<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-elasticsearch</artifactId>
</dependency>
<dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>transport</artifactId>
    <version>5.1.1</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

希望你能帮我

Qua*_*aar 14

我只是偶然发现了同样的问题.似乎Elasticsearch文档不完整.除了传输客户端依赖项之外,还需要添加elasticsearch依赖项:

<dependency>
    <groupId>org.elasticsearch</groupId>
    <artifactId>elasticsearch</artifactId>
    <version>5.1.1</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

您还需要log4j依赖项,但Elasticsearch文档中明确说明了这一点.