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:没有已配置的节点可用:[]
我从ES论坛得到了这个答案,它为我工作:
首先,Spring Data Elasticsearch正式适用于ES 1.x版本(对我而言,它适用于1.7.1)。其次,配置中使用的端口必须为9300
我进行了这些更改,并且效果非常完美。