fix #1094 use ScoreSortBuilder

This commit is contained in:
Shinsuke Sugaya 2017-06-08 22:07:58 +09:00
parent 646e1bde1b
commit 69203364ef

View file

@ -63,7 +63,6 @@ import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.index.query.RangeQueryBuilder;
import org.elasticsearch.index.query.functionscore.FunctionScoreQueryBuilder.FilterFunctionBuilder;
import org.elasticsearch.index.query.functionscore.ScoreFunctionBuilders;
import org.elasticsearch.search.sort.FieldSortBuilder;
import org.elasticsearch.search.sort.SortBuilder;
import org.elasticsearch.search.sort.SortBuilders;
import org.elasticsearch.search.sort.SortOrder;
@ -118,7 +117,7 @@ public class QueryHelper {
protected long timeAllowed = -1;
protected SortBuilder[] defaultSortBuilders;
protected SortBuilder<?>[] defaultSortBuilders;
protected String highlightPrefix = "hl_";
@ -769,7 +768,7 @@ public class QueryHelper {
}
public void addDefaultSort(final String fieldName, final String order) {
final List<SortBuilder> list = new ArrayList<>();
final List<SortBuilder<?>> list = new ArrayList<>();
if (defaultSortBuilders != null) {
stream(defaultSortBuilders).of(stream -> stream.forEach(builder -> list.add(builder)));
}
@ -777,13 +776,12 @@ public class QueryHelper {
defaultSortBuilders = list.toArray(new SortBuilder[list.size()]);
}
protected FieldSortBuilder createFieldSortBuilder(final String field, final SortOrder order) {
final String fieldName = SCORE_FIELD.equals(field) ? ES_SCORE_FIELD : field;
final FieldSortBuilder builder = SortBuilders.fieldSort(fieldName);
if (ES_SCORE_FIELD.equals(fieldName)) {
builder.unmappedType("float");
protected SortBuilder<?> createFieldSortBuilder(final String field, final SortOrder order) {
if (SCORE_FIELD.equals(field) || ES_SCORE_FIELD.equals(field)) {
return SortBuilders.scoreSort().order(order);
} else {
return SortBuilders.fieldSort(field).order(order);
}
return builder.order(order);
}
public void setHighlightPrefix(final String highlightPrefix) {