java.net.ConnectException: Connection Refused

I am using the Java HighLevelRestClient to connect to my elastic instance hosted on AWS. I can make requests against the URL on postman and from my browser just fine, but when I use the client library I get a java.net.ConnectException: Connection Refused. (I don't currently need any authentication as this is a small public test instance).

Edit: I have set up the ElasticSearch [6.2] instance on the AWS console and am making requests against the domain that is created. I don't see any ports that are configured for my domain.

This is my code:

RestHighLevelClient restHighLevelClient = new RestHighLevelClient(restClientBuilder);

        GetRequest getRequest = new GetRequest("some_index", "some_type","some_id");
        final String[] elasticGetResponse = new String[1];

        restHighLevelClient.getAsync(getRequest, new ActionListener<GetResponse>() {

            @Override
            public void onResponse(GetResponse documentFields) {
                try {
                    elasticGetResponse[0] = restHighLevelClient.get(getRequest).toString();
                }

                catch (IOException e) {
                    e.printStackTrace();
                }

            }

            @Override
            public void onFailure(Exception e) {
                e.printStackTrace();
            }
        });

I'm not sure what I'm doing incorrectly. All help is appreciated!

Update: I built the restClientBuilder with the following


        MySSLHelper sslHelper = new MySSLHelper(SSLConfig.builder()
                .withKeyStoreProvider(myKeyStoreProvider)
                .withTrustStoreProvider(InternalTrustStoreProvider.INSTANCE)
                .build());

        RestClientBuilder restClientBuilder = RestClient.builder(new HttpHost("MY_ELASTICSEARCH_ENDPOINT")).setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() {
            @Override
            public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpAsyncClientBuilder) {
                return httpAsyncClientBuilder.setSSLContext(sslHelper.getContext());
            }
        });

How did you create the restClientBuilder object?

updated the original post with the code.

You said there is no auth.

Are you using https here?

I'm not sure about this, I don't think so. My access policy is the public template.

Hey David, on the latest version [6.2] do I need to host the elasticsearch instance locally and use the AWS CLI to access and deploy it? Currently I have only set up the instance via the AWS Console and am trying to hit endpoints at the endpoint provided.

Are you running Elasticsearch as as service by AWS by any chance?

Can you just curl the instance and if so on which address?

Yes I am. I can curl the instance but I want to programmatically access and populate the instance using the Java Client.

I will send you a direct message with the URL.

Few comments:

1st: never ever expose elasticsearch on internet without any security like X-Pack.
2nd: I can't help because I don't know their service so you should ask your AWS support
3rd: Did you look at https://www.elastic.co/cloud and https://aws.amazon.com/marketplace/pp/B01N6YCISK ?

Cloud by elastic is the only way to have access to X-Pack. Think about what is there yet like Security, Monitoring, Reporting and what is coming like Canvas, SQL...

It also runs on AWS or GCP. And 6.3.0 is already available there!

I can totally help on cloud.elastic.co service although you have a support team for you as well.

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.