fix #882 send _score with unmapped_type
This commit is contained in:
parent
b1dc7a26f6
commit
446e5eadb1
1 changed files with 14 additions and 3 deletions
|
@ -63,6 +63,7 @@ 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;
|
||||
|
@ -71,6 +72,8 @@ import org.lastaflute.web.util.LaRequestUtil;
|
|||
|
||||
public class QueryHelper {
|
||||
|
||||
private static final String ES_SCORE_FIELD = "_score";
|
||||
|
||||
protected static final String SCORE_SORT_VALUE = "score";
|
||||
|
||||
protected static final String SCORE_FIELD = "score";
|
||||
|
@ -513,7 +516,7 @@ public class QueryHelper {
|
|||
} else {
|
||||
sortOrder = SortOrder.ASC;
|
||||
}
|
||||
context.addSorts(SortBuilders.fieldSort(SCORE_SORT_VALUE.equals(sortField) ? "_score" : sortField).order(sortOrder));
|
||||
context.addSorts(createFieldSortBuilder(sortField, sortOrder));
|
||||
return null;
|
||||
} else if (INURL_FIELD.equals(field)) {
|
||||
return QueryBuilders.wildcardQuery(fessConfig.getIndexFieldUrl(), "*" + text + "*").boost(boost);
|
||||
|
@ -768,11 +771,19 @@ public class QueryHelper {
|
|||
if (defaultSortBuilders != null) {
|
||||
stream(defaultSortBuilders).of(stream -> stream.forEach(builder -> list.add(builder)));
|
||||
}
|
||||
list.add(SortBuilders.fieldSort(fieldName)
|
||||
.order(SortOrder.DESC.toString().equalsIgnoreCase(order) ? SortOrder.DESC : SortOrder.ASC));
|
||||
list.add(createFieldSortBuilder(fieldName, SortOrder.DESC.toString().equalsIgnoreCase(order) ? SortOrder.DESC : SortOrder.ASC));
|
||||
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;
|
||||
FieldSortBuilder builder = SortBuilders.fieldSort(fieldName);
|
||||
if (ES_SCORE_FIELD.equals(fieldName)) {
|
||||
builder.unmappedType("float");
|
||||
}
|
||||
return builder.order(order);
|
||||
}
|
||||
|
||||
public void setHighlightPrefix(final String highlightPrefix) {
|
||||
this.highlightPrefix = highlightPrefix;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue