Back

Explore Courses Blog Tutorials Interview Questions
0 votes
2 views
in AWS by (19.1k points)

I'm already using JestClinet for all my CRUD operations on my ES on AWS. Now I'm trying to snapshot my ES as described in https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-request-signing.html

Instead of using another RestClient, I'm wondering if I can use my existing JestClient.

1 Answer

0 votes
by (44.4k points)

No, I don’t have it with jestclient, but check this out with Restclient:

String snapshotPath = "/_snapshot/my_repot/snapshot1?wait_for_completion=true";

HttpEntity entity = new NStringEntity("{}", ContentType.APPLICATION_JSON);

Header header = new BasicHeader("Content-Type", "application/json");

try{

  final AWSSigner awsSigner = new AWSSigner(awsAuthProvider, region, "es",

    () -> LocalDateTime.now(ZoneOffset.UTC));

  final AWSSigningRequestInterceptor requestInterceptor = new AWSSigningRequestInterceptor(awsSigner);

  RestClient restClient = RestClient.builder(HttpHost.create(elasticUrl))

        .setRequestConfigCallback(rcc -> rcc.setSocketTimeout(15 * 60 * 1000))

        .setHttpClientConfigCallback(hacb -> hacb.addInterceptorLast(requestInterceptor))

        .setMaxRetryTimeoutMillis(15 * 60 * 1000)

        .build();

  response = restClient.performRequest("PUT", snapshotPath, Collections.emptyMap(), entity, header);

  if(200 == response.getStatusLine().getStatusCode()) {     

    return true;

  }else {       

    return false;

  }

}catch(IOException e) {

  return false;

}

Related questions

Want to get 50% Hike on your Salary?

Learn how we helped 50,000+ professionals like you !

Browse Categories

...