Fetches the next SearchResult, by triggering a new search/scroll request depending on the options and filters of the SearchResult.

If the previous request was a search or a scroll action which provided a scroll argument, fetchNext will use the scrollId retrieved from the current result to make a new scroll request.

If the previous request was a search action which provided size argument and sort filtering, fetchNext will use Elasticsearch's search_after mechanism, which can efficiently search through a large volume of documents, bypassing internal hard limits[1], but at the cost of reflecting the latest changes of the index, as opposed to using scroll.

If the previous request was a search action which provided from and size arguments, fetchNext will add size to from and make a new search request.

How to process every document of a collection

The safest way to process all documents in a collection is to fetch them as a batch in order to avoid memory exhaustion and possibly hitting some hard limits[1] on the database layer.

Make sure your first search request includes the size and scroll parameters

[1] Elasticsearch limits the number of documents inside a single page to 10,000 by default.


Copied to clipboard!

searchResult.fetchNext(new ResponseListener<SearchResult>() {
  public void onSuccess(SearchResult nextSearchResult) {
    // called once the fetchNext action has been completed
    // nextSearchResult is an instantiated SearchResult object

  public void onError(JSONObject error) {
    // Handle error
Copied to clipboard!

import io.kuzzle.sdk.core.Kuzzle;
import io.kuzzle.sdk.core.Options;

Kuzzle kuzzle = new Kuzzle("localhost");

JSONObject filter = new JSONObject();

Options options = new Options();
options.setFrom((long) 0);
options.setSize((long) 1000);

ResponseListener<SearchResult> listener = new ResponseListener<SearchResult>() {
  public void onSuccess(SearchResult searchResult) {
    if (searchResult == null) {

  for (Document doc : searchResult.getDocuments()) {
    // do something with the document
    // this.processDocument(doc);


  public void onError(JSONObject error) {
    // handle errors here

  .collection("collection", "index")
  .search(filter, options, listener);