Created
July 18, 2022 14:55
-
-
Save andreluiz1987/9710c1f30a8c6d7ff35b59be5704e542 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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