This is the codeAbility Sharing Platform! Learn more about the codeAbility Sharing Platform.

Skip to content
Snippets Groups Projects
Commit 8d8b5c90 authored by Philipp Gritsch's avatar Philipp Gritsch
Browse files

#439 add sortorder for elasticsearch query

parent a6281c40
No related merge requests found
This commit is part of merge request !215. Comments created here will be created in the context of that merge request.
......@@ -7,6 +7,9 @@ import at.ac.uibk.gitsearch.repository.jpa.StatisticsRepository;
import at.ac.uibk.gitsearch.service.dto.AutoCompleteEntry;
import at.ac.uibk.gitsearch.service.dto.StatisticsDTO;
import co.elastic.clients.elasticsearch.ElasticsearchClient;
import co.elastic.clients.elasticsearch._types.FieldSort;
import co.elastic.clients.elasticsearch._types.SortOptions;
import co.elastic.clients.elasticsearch._types.SortOrder;
import co.elastic.clients.elasticsearch._types.query_dsl.BoolQuery;
import co.elastic.clients.elasticsearch._types.query_dsl.ExistsQuery;
import co.elastic.clients.elasticsearch._types.query_dsl.MatchPhrasePrefixQuery;
......@@ -565,7 +568,13 @@ public class MetaDataRepository {
final BoolQuery query = queryBuilder.build();
// LOGGER.info("ElasticSearch Query using Java Client API:\n{}", query)
co.elastic.clients.elasticsearch.core.SearchResponse<SearchResultDTO> searchResponse = elasticsearchAPIClient.search(
search -> search.index(SearchRepositoryConstants.INDEX_METADATA).query(q -> q.bool(query)).from(from).size(pageSize),
search ->
search
.index(SearchRepositoryConstants.INDEX_METADATA)
.query(q -> q.bool(query))
.sort(getDefaultSortStrategy())
.from(from)
.size(pageSize),
SearchResultDTO.class
);
......@@ -583,6 +592,18 @@ public class MetaDataRepository {
}
}
private List<SortOptions> getDefaultSortStrategy() {
return List.of(
getSortOptionForFieldAndOrder(SearchRepositoryConstants.SEARCHSTATISTICS_BADGEREWARDED, SortOrder.Desc),
getSortOptionForFieldAndOrder(SearchRepositoryConstants.SEARCHSTATISTICS_DOWNLOADS, SortOrder.Desc),
getSortOptionForFieldAndOrder(SearchRepositoryConstants.SEARCHSTATISTICS_VIEWS, SortOrder.Desc)
);
}
private SortOptions getSortOptionForFieldAndOrder(String field, SortOrder order) {
return SortOptions.of(sb -> sb.field(FieldSort.of(fb -> fb.field(field).order(order))));
}
/**
* creates the query (builder) for the searchInput and the user authorization
*
......
......@@ -41,6 +41,10 @@ public final class SearchRepositoryConstants {
public static final String PROJECT_GROUPS = "project.groups";
public static final String PROJECT_LASTACTIVITYAT = "project.last_activity_at";
public static final String SEARCHSTATISTICS_VIEWS = "searchStatistics.views";
public static final String SEARCHSTATISTICS_DOWNLOADS = "searchStatistics.downloads";
public static final String SEARCHSTATISTICS_BADGEREWARDED = "searchStatistics.badgeRewarded";
private SearchRepositoryConstants() {
// just a list of constants
}
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment