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
...@@ -7,6 +7,9 @@ import at.ac.uibk.gitsearch.repository.jpa.StatisticsRepository; ...@@ -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.AutoCompleteEntry;
import at.ac.uibk.gitsearch.service.dto.StatisticsDTO; import at.ac.uibk.gitsearch.service.dto.StatisticsDTO;
import co.elastic.clients.elasticsearch.ElasticsearchClient; 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.BoolQuery;
import co.elastic.clients.elasticsearch._types.query_dsl.ExistsQuery; import co.elastic.clients.elasticsearch._types.query_dsl.ExistsQuery;
import co.elastic.clients.elasticsearch._types.query_dsl.MatchPhrasePrefixQuery; import co.elastic.clients.elasticsearch._types.query_dsl.MatchPhrasePrefixQuery;
...@@ -565,7 +568,13 @@ public class MetaDataRepository { ...@@ -565,7 +568,13 @@ public class MetaDataRepository {
final BoolQuery query = queryBuilder.build(); final BoolQuery query = queryBuilder.build();
// LOGGER.info("ElasticSearch Query using Java Client API:\n{}", query) // LOGGER.info("ElasticSearch Query using Java Client API:\n{}", query)
co.elastic.clients.elasticsearch.core.SearchResponse<SearchResultDTO> searchResponse = elasticsearchAPIClient.search( 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 SearchResultDTO.class
); );
...@@ -583,6 +592,18 @@ public class MetaDataRepository { ...@@ -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 * creates the query (builder) for the searchInput and the user authorization
* *
......
...@@ -41,6 +41,10 @@ public final class SearchRepositoryConstants { ...@@ -41,6 +41,10 @@ public final class SearchRepositoryConstants {
public static final String PROJECT_GROUPS = "project.groups"; public static final String PROJECT_GROUPS = "project.groups";
public static final String PROJECT_LASTACTIVITYAT = "project.last_activity_at"; 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() { private SearchRepositoryConstants() {
// just a list of constants // 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