Spring Spring 引导应用程序中的数据弹性搜索
Spring Data Elastic search in a Spring Boot application
我有一个 Spring 引导应用程序,我想在其中使用 Elastic search 2.2.0 独立版(不是嵌入式服务器),我想使用 Spring Data Elastic search,那么什么是Spring 数据支持的 Elastic 搜索版本以及如何配置它以连接到 localhost:9200 中的 elasticsearch 实例 运行?
实际上,我尝试将此选项添加到我的 application.properties 文件中:
spring.data.elasticsearch.repositories.enabled=true
spring.data.elasticsearch.cluster-nodes=localhost:9200
后来,我创建了这个配置class:
@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] loaded [], sites
[] 2016-04-28 00:04:01.356 INFO 25613 --- [ restartedMain]
org.elasticsearch.client.transport : [Aardwolf] failed to get
node info for
[#transport#-1][fathi-HP-Pavilion-g6-Notebook-PC][inet[localhost/127.0.0.1:9200]], disconnecting...
org.elasticsearch.transport.ReceiveTimeoutTransportException:
[][inet[localhost/127.0.0.1:9200]][cluster:monitor/nodes/info]
request_id [0] timed out after [5001ms] at
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] at 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 : failed to load
elasticsearch nodes :
org.elasticsearch.client.transport.NoNodeAvailableException: None of
the configured nodes are available: []
我看了官方文档。
如果使用Java配置,请尝试:
@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>
我从 ES 论坛得到了这个答案,它对我有用:
首先,Spring Data Elasticsearch 正式支持 ES 1.x 版本(对我来说它支持 1.7.1)。
二、配置中使用的端口必须是9300
我进行了这些更改并且效果非常好。
正如 Jemli 所说,您将需要使用端口 9300。
还要确保您的 elastiscsearch 客户端和服务器使用相同的主要版本。如果您使用的是 elasticsearch 2.x,则需要将 spring 引导更新到最新版本 (> 1.4.0.RC1)。
如果您需要更多信息,请查看此 post:
http://ignaciosuay.com/how-to-connect-spring-boot-to-elasticsearch-2-x-x/
我有一个 Spring 引导应用程序,我想在其中使用 Elastic search 2.2.0 独立版(不是嵌入式服务器),我想使用 Spring Data Elastic search,那么什么是Spring 数据支持的 Elastic 搜索版本以及如何配置它以连接到 localhost:9200 中的 elasticsearch 实例 运行?
实际上,我尝试将此选项添加到我的 application.properties 文件中:
spring.data.elasticsearch.repositories.enabled=true
spring.data.elasticsearch.cluster-nodes=localhost:9200
后来,我创建了这个配置class:
@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] loaded [], sites [] 2016-04-28 00:04:01.356 INFO 25613 --- [ restartedMain] org.elasticsearch.client.transport : [Aardwolf] failed to get node info for [#transport#-1][fathi-HP-Pavilion-g6-Notebook-PC][inet[localhost/127.0.0.1:9200]], disconnecting...
org.elasticsearch.transport.ReceiveTimeoutTransportException: [][inet[localhost/127.0.0.1:9200]][cluster:monitor/nodes/info] request_id [0] timed out after [5001ms] at 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] at 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 : failed to load elasticsearch nodes : org.elasticsearch.client.transport.NoNodeAvailableException: None of the configured nodes are available: []
我看了官方文档。 如果使用Java配置,请尝试:
@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>
我从 ES 论坛得到了这个答案,它对我有用:
首先,Spring Data Elasticsearch 正式支持 ES 1.x 版本(对我来说它支持 1.7.1)。 二、配置中使用的端口必须是9300
我进行了这些更改并且效果非常好。
正如 Jemli 所说,您将需要使用端口 9300。
还要确保您的 elastiscsearch 客户端和服务器使用相同的主要版本。如果您使用的是 elasticsearch 2.x,则需要将 spring 引导更新到最新版本 (> 1.4.0.RC1)。
如果您需要更多信息,请查看此 post: http://ignaciosuay.com/how-to-connect-spring-boot-to-elasticsearch-2-x-x/