Skip to content

Instantly share code, notes, and snippets.

@andreluiz1987
Created July 18, 2022 14:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save andreluiz1987/9710c1f30a8c6d7ff35b59be5704e542 to your computer and use it in GitHub Desktop.
Save andreluiz1987/9710c1f30a8c6d7ff35b59be5704e542 to your computer and use it in GitHub Desktop.
package javahighclient.searchafter;
import java.io.IOException;
import java.util.Arrays;
import java.util.Objects;
import java.util.stream.Collectors;
import javahighclient.RestClientUtils;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.elasticsearch.search.sort.SortBuilders;
import org.elasticsearch.search.sort.SortOrder;
public class Main {
public static void main(String[] args) throws IOException {
var client = RestClientUtils.getClient();
SearchSourceBuilder builder = getSearchSourceBuilder(null);
SearchResponse response = getSearchResponse(client, builder);
Arrays.stream(response.getHits().getHits()).forEach(
h -> System.out.println(h.getSourceAsString())
);
System.out.println(">>>>>> Next PAGE");
var lastDoc = Arrays.stream(response.getHits().getHits()).collect(Collectors.toList()).get(response.getHits().getHits().length - 1);
builder = getSearchSourceBuilder(new Object[]{lastDoc.getScore(), lastDoc.getSourceAsMap().get("code")});
response = getSearchResponse(client, builder);
Arrays.stream(response.getHits().getHits()).forEach(
h -> System.out.println(h.getSourceAsString())
);
}
private static SearchResponse getSearchResponse(org.elasticsearch.client.RestHighLevelClient client, SearchSourceBuilder builder)
throws IOException {
SearchRequest searchRequest = new SearchRequest();
searchRequest.indices("idx_movies_suggest");
searchRequest.source(builder);
return client.search(searchRequest, RequestOptions.DEFAULT);
}
private static SearchSourceBuilder getSearchSourceBuilder(Object[] arrSearchAfter) {
SearchSourceBuilder builder = new SearchSourceBuilder();
builder.sort(SortBuilders.fieldSort("_score").order(SortOrder.DESC));
builder.sort(SortBuilders.fieldSort("code").order(SortOrder.ASC));
builder.size(5);
builder.query(QueryBuilders.matchAllQuery());
if (Objects.nonNull(arrSearchAfter)) {
builder.searchAfter(arrSearchAfter);
}
return builder;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment