Merge pull request #237 from open-metadata/add_sort_options

ISSUE-236: Add sort options to search api
This commit is contained in:
Suresh Srinivas 2021-08-19 13:30:53 -07:00 committed by GitHub
commit 409b2dff11
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -105,15 +105,15 @@ public class SearchResource {
@Parameter(description = "Sort the search results by field, available fields to " + @Parameter(description = "Sort the search results by field, available fields to " +
"sort weekly_stats" + "sort weekly_stats" +
" , daily_stats, monthly_stats, last_updated_timestamp defaults to weekly_stats") " , daily_stats, monthly_stats, last_updated_timestamp defaults to weekly_stats")
@DefaultValue("weekly_stats") @QueryParam("sort_field") String sortFieldParam, @QueryParam("sort_field") String sortFieldParam,
@Parameter(description = "Sort order asc for ascending or desc for descending, " + @Parameter(description = "Sort order asc for ascending or desc for descending, " +
"defaults to asc") "defaults to desc")
@DefaultValue("asc") @QueryParam("sort_order") String sortOrderParam) throws IOException { @DefaultValue("desc") @QueryParam("sort_order") String sortOrderParam) throws IOException {
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
SearchRequest searchRequest = new SearchRequest(index); SearchRequest searchRequest = new SearchRequest(index);
SortOrder sortOrder = SortOrder.ASC; SortOrder sortOrder = SortOrder.DESC;
if (sortOrderParam.equals("desc")) { if (sortOrderParam.equals("asc")) {
sortOrder = SortOrder.DESC; sortOrder = SortOrder.ASC;
} }
HighlightBuilder.Field highlightTableName = HighlightBuilder.Field highlightTableName =
@ -139,8 +139,10 @@ public class SearchResource {
.highlighter(hb) .highlighter(hb)
.from(from).size(size); .from(from).size(size);
if (sortFieldParam != null && !sortFieldParam.isEmpty()) {
searchSourceBuilder.sort(sortFieldParam, sortOrder);
}
LOG.info(searchSourceBuilder.toString()); LOG.info(searchSourceBuilder.toString());
searchSourceBuilder.timeout(new TimeValue(30, TimeUnit.SECONDS)); searchSourceBuilder.timeout(new TimeValue(30, TimeUnit.SECONDS));
searchRequest.source(searchSourceBuilder); searchRequest.source(searchSourceBuilder);
SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT); SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);