繁体   English   中英

无法将我的 java 应用程序连接到 Elastic Stack 实例

[英]Unable to connect my java application to the Elastic Stack Instance

我已经通过 Google Cloud 设置了我的弹性云服务并设置了一个弹性搜索实例。

我可以将我的数据上传到 Elastic 搜索并很好地查询我的数据。 但是,当我尝试通过 Java 客户端连接到弹性搜索实例时,我不断收到“java.io.IOException”和“java.net.UnknownHostException”异常。

24-Jun-2020 18:55:52.657 SEVERE [http-nio-8181-exec-8] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [dispatcher] in context with path [] threw exception
     java.io.IOException: <Elastic Search endpoint>
        at org.elasticsearch.client.RestClient.extractAndWrapCause(RestClient.java:828)
        at org.elasticsearch.client.RestClient.performRequest(RestClient.java:248)
        at org.elasticsearch.client.RestClient.performRequest(RestClient.java:235)
        at org.elasticsearch.client.RestHighLevelClient.internalPerformRequest(RestHighLevelClient.java:1611)
        
    Caused by: java.net.UnknownHostException: <Elastic Search Endpoint>
        at java.base/java.net.InetAddress$CachedAddresses.get(InetAddress.java:797)
        at java.base/java.net.InetAddress.getAllByName0(InetAddress.java:1505)
        at java.base/java.net.InetAddress.getAllByName(InetAddress.java:1364)
        at java.base/java.net.InetAddress.getAllByName(InetAddress.java:1298)
        at org.apache.http.impl.conn.SystemDefaultDnsResolver.resolve(SystemDefaultDnsResolver.java:45)
        at org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager$InternalAddressResolver.resolveRemoteAddress(PoolingNHttpClientConnectionManager.java:664)
        at org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager$InternalAddressResolver.resolveRemoteAddress(PoolingNHttpClientConnectionManager.java:635)
        at org.apache.http.nio.pool.AbstractNIOConnPool.processPendingRequest(AbstractNIOConnPool.java:474)
        at org.apache.http.nio.pool.AbstractNIOConnPool.lease(AbstractNIOConnPool.java:280)
        at org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager.requestConnection(PoolingNHttpClientConnectionManager.java:295)
        at org.apache.http.impl.nio.client.AbstractClientExchangeHandler.requestConnection(AbstractClientExchangeHandler.java:377)
        at org.apache.http.impl.nio.client.DefaultClientExchangeHandlerImpl.start(DefaultClientExchangeHandlerImpl.java:129)
        at org.apache.http.impl.nio.client.InternalHttpAsyncClient.execute(InternalHttpAsyncClient.java:141)
        at org.elasticsearch.client.RestClient.performRequest(RestClient.java:244)
        ... 49 more

还有我的 Java 代码:

String ELASTIC_SEARCH_USER_NAME = "elastic";
String ELASTIC_SEARCH_PASSWORD = <Password>;
String ELASTIC_SEARCH_ENDPOINT_URL = "https://92d5f385db294fb4b7ff335201d0a854.asia-northeast1.gcp.cloud.es.io";
Integer ELASTIC_SEARCH_PORT = 9243;

final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(ELASTIC_SEARCH_USER_NAME, ELASTIC_SEARCH_PASSWORD));

RestClientBuilder builder = RestClient.builder(new HttpHost(ELASTIC_SEARCH_ENDPOINT_URL, ELASTIC_SEARCH_PORT, "https"))
                    .setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() {
                        @Override
                        public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) {
                            return httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
                        }
                    });

RestHighLevelClient highLevelClient = new RestHighLevelClient(builder);

奇怪的是,我尝试在命令行中 ping 我的端点 url 但我的 cmd 无法 ping url。

我需要在我的 Elastic Stack 控制台中为我的 Java 客户端设置什么来请求查询吗?

谢谢!

您确定您的 Elasticsearch 正在端口9243上运行吗? 这是在 GCP 中,但对于 AWS 托管的 ES,不需要提供port号,只需url就足够了,对下面的代码部分进行更改,看看它是否可以在我们没有的 AWS ES 中工作提到港口。

RestClientBuilder builder = RestClient.builder(new HttpHost(ELASTIC_SEARCH_ENDPOINT_URL,, "https"))

在 elastic.co 论坛上询问这些人,他们建议我从 ELASTIC_SEARCH_ENDPOINT_URL 中删除“https://”部分。

String ELASTIC_SEARCH_ENDPOINT_URL = "https://92d5f385db294fb4b7ff335201d0a854.asia-northeast1.gcp.cloud.es.io";

String ELASTIC_SEARCH_ENDPOINT_URL = "92d5f385db294fb4b7ff335201d0a854.asia-northeast1.gcp.cloud.es.io";

并保留代码的 rest,它起作用了!

我发的论坛帖子如果有人想看看

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM