Open aidin36 opened 2 months ago
💚 CLA has been signed
Hello! Before changing the code, have you tried the refresh
option in the globalSettings
of the BulkIngester? Setting it to true
would refresh after every BulkRequest , making the new data available to search.
Hi (: Thanks for the suggestion. Ideally, I don't want to refresh on all the bulk requests and let Elastic Search decide when is the right time to do so. We only need it in a specific case.
Besides my use case, I believe it's a good idea to return a Future from all the async methods and allow the client to know what happened to the result of the call.
The Issue
In one case in our production app, we want to
flush
the bulk operations and make them immediately available for search. So, we do aflush
on ourBulkIngester
instance, then we do aclient.indices().refresh()
. However, because theflush
operation is asynchronous, most of the time before all the operations flush, therefresh
gets called. So, some of the changes aren't immediately available for search.The Solution
I returned a
CompletableFuture
from theflush
method, so the user can wait for theflush
to finish if required.Documents
Sorry, I couldn't find where's the document for the
flush
method so I could update it. If you point me to it, I can update the return type there.gradlew check
There are nine failing tests. But they were failing before my changes too.