Make sure all async requests have been completed

(Prakhar Jain) #1

I am using Java high level rest client to search for hundreds of products stored in elastic search.
I am using term query.
Since, there are hundreds of products that needs to be searched, I have used async request for term query in for loop.
But I need to make sure that all requests have been completed once the loop is exited and a new statement needs to be executed.
I am not sure how to do this.

My code looks like this:

for(ProductField field: fields) {
    String type = field.getType();
    String value = field.getValue();
    client.searchAsync(request, new ActionListener<SearchResponse>() {
        public void onResponse(SearchResponse searchResponse) {


        public void onFailure(Exception e) {


After for loop the next statement should be executed only if all async requests have been completed.
How should I do this?

(Prakhar Jain) #2

Hi, I would like anyone to reply.
This is a basic question of Async requests.
We are having multiple Async request going in parallel and we want a time when all the request end.
Also, there is no multi search in Java High Level Rest Client.

(David Pilato) #3

Multi search is coming in 6.2.0.

For the other questions I believe this is more a Java question about asynchronous calls in general than something specific to elasticsearch.

(system) #4

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