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

标签 java elasticsearch elastic-stack elasticsearch-5

我已经通过Google Cloud设置了我的Elastic Cloud Service,并设置了Elastic Search实例。
我可以将数据上传到Elastic搜索并查询数据。但是,当我尝试通过Java客户端连接到Elastic Search实例时,会不断收到“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的AWS ES中正常工作提港口。

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

关于java - 无法将我的Java应用程序连接到Elastic Stack实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62552911/

相关文章:

elasticsearch - 查询 Elasticsearch 时没有匹配项

docker - Kibana 5.5.1 位于 nginx 1.13 代理后面(dockerized)

elasticsearch - ElasticSearch过滤器无法使用must AND must_not

java - 如何将 javac 的输出重定向回调用程序

java - 使用 List<UnaryOperator<...>> 映射对象

java - 发送一些内容后重定向网页

ruby-on-rails - Searchkick分页,限制和偏移问题,滑轨

java - 更改生成的映射器类的位置

java - Elasticsearch 1.3。 - 从 Java 调用自定义 REST 端点

indexing - Elasticsearch:自动索引删除/过期