处理 org.elasticsearch.client.transport.NoNodeAvailableException
Handling org.elasticsearch.client.transport.NoNodeAvailableException
您好,在我的 SpringBoot 项目中,我使用 JPA 配置了弹性搜索。我正在为此使用 ElasticsearchRepository。现在进行配置,当我使用 localhost 时,一切正常,但是当我输入 IP 地址时,我遇到了异常-
org.elasticsearch.client.transport.NoNodeAvailableException: None of
the configured nodes are available:
[{#transport#-1}{lDnuVli1Rriy-9j1pdozZA}{27.101.12.99}{27.101.12.99:9300}]
at
org.elasticsearch.client.transport.TransportClientNodesService.ensureNodesAreAvailable(TransportClientNodesService.java:347)
~[elasticsearch-5.6.11.jar:5.6.11] at
org.elasticsearch.client.transport.TransportClientNodesService.execute(TransportClientNodesService.java:245)
~[elasticsearch-5.6.11.jar:5.6.11] at
org.elasticsearch.client.transport.TransportProxyClient.execute(TransportProxyClient.java:59)
~[elasticsearch-5.6.11.jar:5.6.11] at
org.elasticsearch.client.transport.TransportClient.doExecute(TransportClient.java:366)
~[elasticsearch-5.6.11.jar:5.6.11] at
org.elasticsearch.client.support.AbstractClient.execute(AbstractClient.java:408)
~[elasticsearch-5.6.11.jar:5.6.11] at
org.elasticsearch.action.ActionRequestBuilder.execute(ActionRequestBuilder.java:80)
~[elasticsearch-5.6.11.jar:5.6.11] at
org.elasticsearch.action.ActionRequestBuilder.execute(ActionRequestBuilder.java:54)
~[elasticsearch-5.6.11.jar:5.6.11] at
org.springframework.data.elasticsearch.core.ElasticsearchTemplate.index(ElasticsearchTemplate.java:571)
~[spring-data-elasticsearch-3.0.10.RELEASE.jar:3.0.10.RELEASE] at
org.springframework.data.elasticsearch.repository.support.AbstractElasticsearchRepository.save(AbstractElasticsearchRepository.java:156)
~[spring-data-elasticsearch-3.0.10.RELEASE.jar:3.0.10.RELEASE] at
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
~[na:1.8.0_151] at
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
~[na:1.8.0_151] at
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
~[na:1.8.0_151] at java.lang.reflect.Method.invoke(Unknown Source)
~[na:1.8.0_151]
初始化 Elastic Search 的代码 -
@Bean
public Client client() throws Exception {
Settings settings = Settings.builder()
.put("cluster.name",getElasticCluster())
.build();
return new PreBuiltTransportClient(Settings.EMPTY)
.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(getElasticHost()),getElasticPort()));
}
@Bean
public ElasticsearchOperations elasticsearchTemplate() throws Exception {
return new ElasticsearchTemplate(client());
}
elasticsearch:
jest:
proxy:
host: 27.101.12.99
port: 9300
我进行了很多搜索,但对我的情况没有任何帮助。所以请检查并提供帮助。
您应用程序中的 elasticsearch 客户端正在使用传输协议加入集群。此方法已弃用并已在最近的版本中删除。
这表示传输协议不是 HTTP,您的开玩笑代理可能无法 analyse/mock 发送数据。这就是为什么 localhost 工作但 jest 代理失败的原因。
为了使您的应用程序与未来版本的 elasticsearch 兼容,您应该考虑使用高级 REST 客户端而不丢失 spring 应用程序的任何功能。作为一个快速的胜利,你将能够再次使用 jest,因为 REST 客户端正在使用 HTTP 与 elasticsearch 通信。
有关客户端迁移的详细信息,请查看此内容(我假设是基于堆栈跟踪的 elasticsearch 版本,请仔细检查)https://www.elastic.co/guide/en/elasticsearch/client/java-rest/5.6/java-rest-high-level-migration.html
您好,在我的 SpringBoot 项目中,我使用 JPA 配置了弹性搜索。我正在为此使用 ElasticsearchRepository。现在进行配置,当我使用 localhost 时,一切正常,但是当我输入 IP 地址时,我遇到了异常-
org.elasticsearch.client.transport.NoNodeAvailableException: None of the configured nodes are available: [{#transport#-1}{lDnuVli1Rriy-9j1pdozZA}{27.101.12.99}{27.101.12.99:9300}] at org.elasticsearch.client.transport.TransportClientNodesService.ensureNodesAreAvailable(TransportClientNodesService.java:347) ~[elasticsearch-5.6.11.jar:5.6.11] at org.elasticsearch.client.transport.TransportClientNodesService.execute(TransportClientNodesService.java:245) ~[elasticsearch-5.6.11.jar:5.6.11] at org.elasticsearch.client.transport.TransportProxyClient.execute(TransportProxyClient.java:59) ~[elasticsearch-5.6.11.jar:5.6.11] at org.elasticsearch.client.transport.TransportClient.doExecute(TransportClient.java:366) ~[elasticsearch-5.6.11.jar:5.6.11] at org.elasticsearch.client.support.AbstractClient.execute(AbstractClient.java:408) ~[elasticsearch-5.6.11.jar:5.6.11] at org.elasticsearch.action.ActionRequestBuilder.execute(ActionRequestBuilder.java:80) ~[elasticsearch-5.6.11.jar:5.6.11] at org.elasticsearch.action.ActionRequestBuilder.execute(ActionRequestBuilder.java:54) ~[elasticsearch-5.6.11.jar:5.6.11] at org.springframework.data.elasticsearch.core.ElasticsearchTemplate.index(ElasticsearchTemplate.java:571) ~[spring-data-elasticsearch-3.0.10.RELEASE.jar:3.0.10.RELEASE] at org.springframework.data.elasticsearch.repository.support.AbstractElasticsearchRepository.save(AbstractElasticsearchRepository.java:156) ~[spring-data-elasticsearch-3.0.10.RELEASE.jar:3.0.10.RELEASE] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_151] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_151] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_151] at java.lang.reflect.Method.invoke(Unknown Source) ~[na:1.8.0_151]
初始化 Elastic Search 的代码 -
@Bean
public Client client() throws Exception {
Settings settings = Settings.builder()
.put("cluster.name",getElasticCluster())
.build();
return new PreBuiltTransportClient(Settings.EMPTY)
.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(getElasticHost()),getElasticPort()));
}
@Bean
public ElasticsearchOperations elasticsearchTemplate() throws Exception {
return new ElasticsearchTemplate(client());
}
elasticsearch: jest: proxy: host: 27.101.12.99 port: 9300
我进行了很多搜索,但对我的情况没有任何帮助。所以请检查并提供帮助。
您应用程序中的 elasticsearch 客户端正在使用传输协议加入集群。此方法已弃用并已在最近的版本中删除。 这表示传输协议不是 HTTP,您的开玩笑代理可能无法 analyse/mock 发送数据。这就是为什么 localhost 工作但 jest 代理失败的原因。
为了使您的应用程序与未来版本的 elasticsearch 兼容,您应该考虑使用高级 REST 客户端而不丢失 spring 应用程序的任何功能。作为一个快速的胜利,你将能够再次使用 jest,因为 REST 客户端正在使用 HTTP 与 elasticsearch 通信。
有关客户端迁移的详细信息,请查看此内容(我假设是基于堆栈跟踪的 elasticsearch 版本,请仔细检查)https://www.elastic.co/guide/en/elasticsearch/client/java-rest/5.6/java-rest-high-level-migration.html