簡體   English   中英

Java Elasticsearch 高級 REST AWS 托管客戶端庫 Z45E23A169654FAF95CE80DA8

[英]Java Elasticsearch Highlevel REST Client lib on AWS Managed Elasticsearch

我在AWS Managed Z45E23A169652AAFDZCE80DA上使用Java Elasticsearch 高級 REST 客戶端庫,並且出現如下錯誤。

public static void main(String[] args) throws Exception {
    RestHighLevelClient client = new RestHighLevelClient(
            RestClient.builder(new HttpHost("https://search-xxxx-xxxxxxx.aws-region-x.es.amazonaws.com")));

    ClusterHealthRequest req = new ClusterHealthRequest();
    ClusterHealthResponse res =  client.cluster().health(req, RequestOptions.DEFAULT);
    System.out.println(res.toString());

    client.close();
}

錯誤如下:

Exception in thread "main" java.io.IOException: https://search-xxxx-xxxxxxx.aws-region-x.es.amazonaws.com
at org.elasticsearch.client.RestClient.extractAndWrapCause(RestClient.java:793)
at org.elasticsearch.client.RestClient.performRequest(RestClient.java:218)
at org.elasticsearch.client.RestClient.performRequest(RestClient.java:205)
at org.elasticsearch.client.RestHighLevelClient.internalPerformRequest(RestHighLevelClient.java:1454)
at org.elasticsearch.client.RestHighLevelClient.performRequest(RestHighLevelClient.java:1424)
at org.elasticsearch.client.RestHighLevelClient.performRequestAndParseEntity(RestHighLevelClient.java:1394)
at org.elasticsearch.client.ClusterClient.health(ClusterClient.java:118)
at ClusterHealthCheck.main(ClusterHealthCheck.java:15)
Caused by: java.net.UnknownHostException: https://search-xxxx-xxxxxxx.aws-region-x.es.amazonaws.com
at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
at java.net.InetAddress$2.lookupAllHostAddr(InetAddress.java:928)
at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1323)
at java.net.InetAddress.getAllByName0(InetAddress.java:1276)
at java.net.InetAddress.getAllByName(InetAddress.java:1192)
at java.net.InetAddress.getAllByName(InetAddress.java:1126)
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:214)

我將此代碼用於我的本地 Elasticsearch 並且一切正常。 發生什么事?

我得到了同樣的例外。 我已經通過稍微更改主機並向 HttpHost object 添加其他參數來解決它。 它看起來類似於 Seetha 的答案,但這對我不起作用。 您可以嘗試以下方法:

public static void main(String[] args) throws Exception {
    RestHighLevelClient client = new RestHighLevelClient(
            RestClient.builder(new HttpHost("search-xxxx-xxxxxxx.aws-region-x.es.amazonaws.com", 443, "https")));

    ClusterHealthRequest req = new ClusterHealthRequest();
    ClusterHealthResponse res =  client.cluster().health(req, RequestOptions.DEFAULT);
    System.out.println(res.toString());

    client.close();
}

你得到

java.net.UnknownHostException

我認為您應該按如下方式創建 HttpHost:

new HttpHost("xxxxxxxxx", portNumber, "https")

而不是new HttpHost("https://search-xxxx-xxxxxxx.aws-region-x.es.amazonaws.com")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM