elasticsearch - ElasticSearch 客户端连接不可能
问题描述
我在使用 ElasticSearch 客户端时遇到问题。
我设计了一个 Java 应用程序(以完成我的开发人员学习),用于管理不同的数据库 MySQL、mongoDb 和 ElasticSearch。我能够从一个数据库读取、创建和更新数据到另一个数据库。一切都是用本地数据库设计和编码的,一切都很好。所有测试都已经过验证,因此我们决定让它在真实数据库上的远程服务器上运行。
然后问题就开始发生了,尤其是我在漫长的两天里一直坚持的那个问题,我变得非常绝望。
使用 TransportClient 它在本地工作,但在真实服务器上它带来了 NoNodeAvailableException 说没有配置的节点可用。尝试了很多事情来使它工作,但它没有。
所以我决定尝试使用 REST 连接和请求。这是我的代码,我得到的错误不是很详细:它是一个 ConnectException。
代码 :
// Get the connection client from ES database
public static RestHighLevelClient getConnection()
{
// Singleton
if(client == null)
{
try
{
// Set Credz
final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials("Login", "pwd"));
// Builder
RestClientBuilder builder = RestClient.builder(new HttpHost("ServerIP", 9200, "http")).setHttpClientConfigCallback(new HttpClientConfigCallback()
{
@Override
public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder)
{
System.out.println("Setting taken !");
return httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
}
});
// Create client
client = new RestHighLevelClient (builder);
ClusterHealthRequest healthReq = new ClusterHealthRequest("looppy-cluster");
ClusterHealthResponse response = client.cluster().health(healthReq, RequestOptions.DEFAULT);
int numberOfNodes = response.getNumberOfNodes();
System.out.println("Nodes Nb : " + numberOfNodes);
}
catch(Exception ex)
{
System.out.println("Client connection problem");
ex.printStackTrace();
}
}
return client;
}
这是我得到的例外:
java.net.ConnectException
at org.elasticsearch.client.RestClient$SyncResponseListener.get(RestClient.java:943)
at org.elasticsearch.client.RestClient.performRequest(RestClient.java:227)
at org.elasticsearch.client.RestHighLevelClient.performRequest(RestHighLevelClient.java:1256)
at org.elasticsearch.client.RestHighLevelClient.performRequestAndParseEntity(RestHighLevelClient.java:1231)
at org.elasticsearch.client.ClusterClient.health(ClusterClient.java:146)
at utils.ElasticSearchMng.getConnection(ElasticSearchMng.java:86)
at utils.ElasticSearchMng.getLoopiesFromES(ElasticSearchMng.java:133)
at program.Program$1.run(Program.java:96)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: java.net.ConnectException
at org.apache.http.nio.pool.RouteSpecificPool.timeout(RouteSpecificPool.java:168)
at org.apache.http.nio.pool.AbstractNIOConnPool.requestTimeout(AbstractNIOConnPool.java:561)
at org.apache.http.nio.pool.AbstractNIOConnPool$InternalSessionRequestCallback.timeout(AbstractNIOConnPool.java:822)
at org.apache.http.impl.nio.reactor.SessionRequestImpl.timeout(SessionRequestImpl.java:183)
at org.apache.http.impl.nio.reactor.DefaultConnectingIOReactor.processTimeouts(DefaultConnectingIOReactor.java:210)
at org.apache.http.impl.nio.reactor.DefaultConnectingIOReactor.processEvents(DefaultConnectingIOReactor.java:155)
at org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor.execute(AbstractMultiworkerIOReactor.java:348)
at org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager.execute(PoolingNHttpClientConnectionManager.java:192)
at org.apache.http.impl.nio.client.CloseableHttpAsyncClientBase$1.run(CloseableHttpAsyncClientBase.java:64)
at java.lang.Thread.run(Unknown Source)
我越来越绝望,我真的不明白发生了什么,如果有人可以提供帮助,将不胜感激!
非常感谢伙计们
解决方案
问题终于解决了,端口不是很好,使用服务器的人告诉我端口,因为他们改变了它并且它直接工作;)
推荐阅读
- jenkins - 有什么方法可以检查我在 Jenkins 上运行的构建历史记录吗?
- symfony - 如何在有多个配置时设置默认 manifest_json_path?
- javascript - 替换两个标签之间的数字javascript
- c# - 漏洞?System.ArgumentException: '无法找出路线:
- javascript - 在导航中显示系列,无论它是隐藏还是显示在 highcharts.js 中?
- python - Django rest框架多对一关系
- javascript - 将钩子置于状态
- objective-c - 单击取消按钮并重新打开视图后输入不会重置
- python-3.x - 根据另一列的值在列中添加部分字符串(Python Pandas)
- android - 活动过渡动画不适用于 Pixel 3