|
15 | 15 | */
|
16 | 16 | package org.springframework.data.elasticsearch.core;
|
17 | 17 |
|
18 |
| -import static org.apache.commons.lang.StringUtils.isBlank; |
19 |
| -import static org.apache.commons.lang.StringUtils.isNotBlank; |
20 |
| -import static org.elasticsearch.client.Requests.indicesExistsRequest; |
21 |
| -import static org.elasticsearch.client.Requests.refreshRequest; |
22 |
| -import static org.elasticsearch.index.VersionType.EXTERNAL; |
23 |
| -import static org.elasticsearch.index.query.QueryBuilders.moreLikeThisQuery; |
24 |
| -import static org.elasticsearch.index.query.QueryBuilders.wrapperQuery; |
25 |
| -import static org.springframework.data.elasticsearch.core.MappingBuilder.buildMapping; |
| 18 | +import static org.apache.commons.lang.StringUtils.*; |
| 19 | +import static org.elasticsearch.client.Requests.*; |
| 20 | +import static org.elasticsearch.index.VersionType.*; |
| 21 | +import static org.elasticsearch.index.query.QueryBuilders.*; |
| 22 | +import static org.springframework.data.elasticsearch.core.MappingBuilder.*; |
26 | 23 | import static org.springframework.util.CollectionUtils.isEmpty;
|
27 | 24 |
|
28 | 25 | import java.io.BufferedReader;
|
29 | 26 | import java.io.IOException;
|
30 | 27 | import java.io.InputStreamReader;
|
31 |
| -import java.util.*; |
| 28 | +import java.util.ArrayList; |
| 29 | +import java.util.Collections; |
| 30 | +import java.util.HashMap; |
| 31 | +import java.util.Iterator; |
| 32 | +import java.util.LinkedList; |
| 33 | +import java.util.List; |
| 34 | +import java.util.Map; |
| 35 | +import java.util.NoSuchElementException; |
32 | 36 | import java.util.stream.Collectors;
|
33 | 37 |
|
34 | 38 | import org.elasticsearch.action.ActionFuture;
|
|
67 | 71 | import org.elasticsearch.search.aggregations.AbstractAggregationBuilder;
|
68 | 72 | import org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder;
|
69 | 73 | import org.elasticsearch.search.sort.FieldSortBuilder;
|
| 74 | +import org.elasticsearch.search.sort.ScoreSortBuilder; |
70 | 75 | import org.elasticsearch.search.sort.SortBuilder;
|
71 | 76 | import org.elasticsearch.search.sort.SortBuilders;
|
72 | 77 | import org.elasticsearch.search.sort.SortOrder;
|
|
93 | 98 | import org.springframework.data.elasticsearch.core.mapping.ElasticsearchPersistentEntity;
|
94 | 99 | import org.springframework.data.elasticsearch.core.mapping.ElasticsearchPersistentProperty;
|
95 | 100 | import org.springframework.data.elasticsearch.core.mapping.SimpleElasticsearchMappingContext;
|
96 |
| -import org.springframework.data.elasticsearch.core.query.*; |
| 101 | +import org.springframework.data.elasticsearch.core.query.AliasQuery; |
| 102 | +import org.springframework.data.elasticsearch.core.query.CriteriaQuery; |
| 103 | +import org.springframework.data.elasticsearch.core.query.DeleteQuery; |
| 104 | +import org.springframework.data.elasticsearch.core.query.FetchSourceFilter; |
| 105 | +import org.springframework.data.elasticsearch.core.query.GetQuery; |
| 106 | +import org.springframework.data.elasticsearch.core.query.IndexBoost; |
| 107 | +import org.springframework.data.elasticsearch.core.query.IndexQuery; |
| 108 | +import org.springframework.data.elasticsearch.core.query.MoreLikeThisQuery; |
| 109 | +import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder; |
| 110 | +import org.springframework.data.elasticsearch.core.query.Query; |
| 111 | +import org.springframework.data.elasticsearch.core.query.ScriptField; |
| 112 | +import org.springframework.data.elasticsearch.core.query.SearchQuery; |
| 113 | +import org.springframework.data.elasticsearch.core.query.SourceFilter; |
| 114 | +import org.springframework.data.elasticsearch.core.query.StringQuery; |
| 115 | +import org.springframework.data.elasticsearch.core.query.UpdateQuery; |
97 | 116 | import org.springframework.data.util.CloseableIterator;
|
98 | 117 | import org.springframework.util.Assert;
|
99 | 118 |
|
|
118 | 137 | public class ElasticsearchTemplate implements ElasticsearchOperations, ApplicationContextAware {
|
119 | 138 |
|
120 | 139 | private static final Logger logger = LoggerFactory.getLogger(ElasticsearchTemplate.class);
|
| 140 | + private static final String FIELD_SCORE = "_score"; |
| 141 | + |
121 | 142 | private Client client;
|
122 | 143 | private ElasticsearchConverter elasticsearchConverter;
|
123 | 144 | private ResultsMapper resultsMapper;
|
@@ -1015,15 +1036,27 @@ private SearchRequestBuilder prepareSearch(Query query) {
|
1015 | 1036 |
|
1016 | 1037 | if (query.getSort() != null) {
|
1017 | 1038 | for (Sort.Order order : query.getSort()) {
|
1018 |
| - FieldSortBuilder sort = SortBuilders.fieldSort(order.getProperty()) |
1019 |
| - .order(order.getDirection().isDescending() ? SortOrder.DESC : SortOrder.ASC); |
1020 |
| - if (order.getNullHandling() == Sort.NullHandling.NULLS_FIRST) { |
1021 |
| - sort.missing("_first"); |
1022 |
| - } |
1023 |
| - else if (order.getNullHandling() == Sort.NullHandling.NULLS_LAST) { |
1024 |
| - sort.missing("_last"); |
| 1039 | + SortOrder sortOrder = order.getDirection().isDescending() ? SortOrder.DESC : SortOrder.ASC; |
| 1040 | + |
| 1041 | + if (FIELD_SCORE.equals(order.getProperty())) { |
| 1042 | + ScoreSortBuilder sort = SortBuilders // |
| 1043 | + .scoreSort() // |
| 1044 | + .order(sortOrder); |
| 1045 | + |
| 1046 | + searchRequestBuilder.addSort(sort); |
| 1047 | + } else { |
| 1048 | + FieldSortBuilder sort = SortBuilders // |
| 1049 | + .fieldSort(order.getProperty()) // |
| 1050 | + .order(sortOrder); |
| 1051 | + |
| 1052 | + if (order.getNullHandling() == Sort.NullHandling.NULLS_FIRST) { |
| 1053 | + sort.missing("_first"); |
| 1054 | + } else if (order.getNullHandling() == Sort.NullHandling.NULLS_LAST) { |
| 1055 | + sort.missing("_last"); |
| 1056 | + } |
| 1057 | + |
| 1058 | + searchRequestBuilder.addSort(sort); |
1025 | 1059 | }
|
1026 |
| - searchRequestBuilder.addSort(sort); |
1027 | 1060 | }
|
1028 | 1061 | }
|
1029 | 1062 |
|
|
2 commit comments
odrotbohm commentedon Jun 18, 2018
Please make sure, we follow the commit message guidelines going forward. I'm gonna fix this real quick for now and force push the changes.
xhaggi commentedon Jun 18, 2018
Ok