我有一个Spring Boot应用程序,我想在其中使用Elastic search 2.2.0独立(不是嵌入式服务器),我想使用Spring Data Elastic搜索,那么Spring Data支持的弹性搜索版本是什么?我可以将其配置为连接到localhost:9200中运行的elasticsearch实例吗?
实际上,我尝试将此选项添加到我的application.properties文件中:
spring.data.elasticsearch.repositories.enabled=true
spring.data.elasticsearch.cluster-nodes=localhost:9200
后来,我创建了这个配置类:
@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;
}
}
我得到了这个堆栈跟踪:
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 [本地主机/ 127.0.0.1:9200] [簇:显示器/节点/信息] request_id [0]在[5001ms]之后超时 org.elasticsearch.transport.TransportService $ TimeoutHandler.run(TransportService.java:529) 〜[elasticsearch-1.5.2.jar:na] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 〜[na:1.8.0_77] at java.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 ERROR 25613 --- [restartedMain] .d.e.r.s.AbstractElasticsearchRepository:无法加载 elasticsearch节点: org.elasticsearch.client.transport.NoNodeAvailableException:无 配置的节点可用:[]
答案 0 :(得分:4)
我从ES论坛得到了这个答案,它对我有用:
首先,Spring Data Elasticsearch正式使用ES 1.x版本(对我而言,它与1.7.1一起使用)。 其次,配置中使用的端口必须是9300
我做了这些改变,但它的工作非常完美。
答案 1 :(得分:4)
正如Jemli所说,你需要使用9300端口。
还要确保您的elastiscsearch客户端和服务器使用相同的主要版本。如果您使用的是elasticsearch 2.x,则需要将spring boot更新到最新版本(> 1.4.0.RC1)。
如果您需要更多信息,请查看此帖子: http://ignaciosuay.com/how-to-connect-spring-boot-to-elasticsearch-2-x-x/
答案 2 :(得分:1)
我读了官方文件。 如果使用Java Config,请尝试:
@Configuration
@EnableElasticsearchRepositories(basePackages = "org/springframework/data/elasticsearch/repositories")
static class Config {
@Bean
public ElasticsearchOperations elasticsearchTemplate() {
return new ElasticsearchTemplate(nodeBuilder().local(true).node().client());
}
}
如果使用XML,请尝试:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:elasticsearch="http://www.springframework.org/schema/data/elasticsearch"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/data/elasticsearch
http://www.springframework.org/schema/data/elasticsearch/spring-elasticsearch-1.0.xsd">
<elasticsearch:transport-client id="client" cluster-nodes="localhost:9300,someip:9300" />
</beans>