如何使用elasticsearch 5.2.1配置Spring Boot?

cek*_*cek 7 elasticsearch spring-boot spring-data-elasticsearch

我正在尝试将我的Spring Boot应用程序连接到本地elasticsearch 5.2.1实例.当我使用" org.springframework.boot:spring-boot-starter-data-elasticsearch "依赖时,我面对" 来自不支持版本的收到消息:[2.0.0]最小兼容版本是:[5.0.0] ".我认为这是由于elasticsearch版本在启动器依赖中是2.4.4.因此,要解决此错误,我可以通过添加elasticsearch.version> 5.2.1/elasticsearch.version> line来编辑pom.xml属性.但这次我得到" java.lang.NoSuchMethodError:org.elasticsearch.client.transport.TransportClient.builder() "

要解决这个问题,我创建自定义配置类,如下所示:

@Configuration
public class ElasticsearchConfiguration {

@Bean
public Client client() throws UnknownHostException {
    TransportClient client = new PreBuiltTransportClient(Settings.EMPTY)
            .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("localhost"), 9300));

    return client;
}

@Bean
public ElasticsearchTemplate elasticsearchTemplate() throws UnknownHostException {
    return new ElasticsearchTemplate(client());
}
}
Run Code Online (Sandbox Code Playgroud)

这次我得到apache.logging.log4j异常(请点击这里),所以我添加了必要的依赖项.

最后,我得到了以下错误并坚持到那里.任何人都可以帮我解决这个问题吗?

嵌套异常是java.lang.NoClassDefFoundError:org/elasticsearch/action/count/CountRequestBuilder

小智 1

我尝试了同样的操作,也遇到了这个错误CountRequestBuilder,原因是该类CountRequestBuilder已被弃用并已从 5.x 弹性搜索版本中删除,该类已被替换,SearchRequestBuilder但不幸的是,spring-data-elasticsearch即使在其 jar 的最新版本中也没有提供该类CountRequestBuilder用于 ElasticSearchTemplate 中。

我也在寻找一些解决方案。如果能够解决我会发帖。