在Spring Boot应用程序中进行Spring Data Elastic搜索

jem*_*thi 2 java spring elasticsearch spring-boot spring-data-elasticsearch

我有一个Spring Boot应用程序,我想在其中使用独立的Elastic search 2.2.0(不是嵌入式服务器),我想使用Spring Data Elastic search,那么Spring Data支持的Elastic search版本是什么以及如何配置它连接到在localhost:9200中运行的elasticsearch实例吗?

实际上,我尝试将以下选项添加到我的application.properties文件中:

spring.data.elasticsearch.repositories.enabled=true
spring.data.elasticsearch.cluster-nodes=localhost:9200
Run Code Online (Sandbox Code Playgroud)

然后,我创建了这个配置类:

@Configuration
public class ElasticConfig {

    @Bean
    public ElasticsearchOperations elasticsearchTemplate() {
        return new ElasticsearchTemplate(client());
    }

    @Bean
    public Client client() {
        TransportClient client = new TransportClient();
        TransportAddress address = new InetSocketTransportAddress(
                "localhost",9200);
        client.addTransportAddress(address);
        return client;
    }
}
Run Code Online (Sandbox Code Playgroud)

我得到这个堆栈跟踪:

2016-04-28 00:03:52.246 INFO 25613 --- [restartedMain] org.elasticsearch.plugins:[Aardwolf]已加载[],网站[] 2016-04-28 00:04:01.356 INFO 25613 --- [ restartedMain] org.elasticsearch.client.transport:[Aardwolf]无法获取[#transport#-1] [fathi-HP-Pavilion-g6-Notebook-PC] [inet [localhost / 127.0.0.1:9200]]的节点信息],正在断开连接...

org.elasticsearch.transport.ReceiveTimeoutTransportException:[] [inet [localhost / 127.0.0.1:9200]] [cluster:monitor / nodes / info] request_id [0]在org.elasticsearch.transport.TransportService $ [5001ms]之后超时java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)的TimeoutHandler.run(TransportService.java:529)〜[elasticsearch-1.5.2.jar:na]〜java的[na:1.8.0_77]。 util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:617)〜[na:1.8.0_77]在java.lang.Thread.run(Thread.java:745)〜[na:1.8.0_77]

2016-04-28 00:04:01.512错误25613 --- [restartedMain] .dersAbstractElasticsearchRepository:无法加载elasticsearch节点:org.elasticsearch.client.transport.NoNodeAvailableException:没有已配置的节点可用:[]

jem*_*thi 5

我从ES论坛得到了这个答案,它为我工作:

首先,Spring Data Elasticsearch正式适用于ES 1.x版本(对我而言,它适用于1.7.1)。其次,配置中使用的端口必须为9300

我进行了这些更改,并且效果非常完美。