Skip to content

Commit 6f621e4

Browse files
committed
improve conditions when to apply ts query logic.
1 parent 9276fe3 commit 6f621e4

File tree

2 files changed

+12
-6
lines changed

2 files changed

+12
-6
lines changed

server/src/main/java/org/elasticsearch/index/mapper/DateFieldMapper.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -740,8 +740,12 @@ public Query rangeQuery(
740740
parser = forcedDateParser;
741741
}
742742
return dateRangeQuery(lowerTerm, upperTerm, includeLower, includeUpper, timeZone, parser, context, resolution, (l, u) -> {
743-
var indexMode = context.getIndexSettings().getMode();
743+
var indexSettings = context.getIndexSettings();
744+
var indexMode = indexSettings.getMode();
745+
boolean sortOnTimestamp = indexSettings.getIndexSortConfig().hasSortOnField(DataStream.TIMESTAMP_FIELD_NAME);
744746
if ((indexMode == IndexMode.TIME_SERIES || indexMode == IndexMode.LOGSDB)
747+
&& sortOnTimestamp
748+
&& indexSettings.useDocValuesSkipper()
745749
&& name().equals(DataStream.TIMESTAMP_FIELD_NAME)) {
746750
return new TimestampQuery(l, u);
747751
}

server/src/main/java/org/elasticsearch/search/sort/FieldSortBuilder.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -379,11 +379,13 @@ public SortFieldAndFormat build(SearchExecutionContext context) throws IOExcepti
379379
// TODO: HACK to wire up the special timestamp comparator
380380
// (typically we default to Lucene's sort fields and enabling a custom sort field for timestamp field mapper fails,
381381
// because index sorting uses this as well. Index sorting doesn't support custom sort fields. Need to fix this)
382-
var indexMode = context.getIndexSettings().getMode();
383-
boolean sortOnTimestamp = context.getIndexSettings().getIndexSortConfig().hasSortOnField(DataStream.TIMESTAMP_FIELD_NAME);
384-
if (DataStream.TIMESTAMP_FIELD_NAME.equals(fieldName)
385-
&& sortOnTimestamp
386-
&& (indexMode == IndexMode.LOGSDB || indexMode == IndexMode.TIME_SERIES)) {
382+
var indexSettings = context.getIndexSettings();
383+
var indexMode = indexSettings.getMode();
384+
boolean sortOnTimestamp = indexSettings.getIndexSortConfig().hasSortOnField(DataStream.TIMESTAMP_FIELD_NAME);
385+
if (sortOnTimestamp
386+
&& (indexMode == IndexMode.LOGSDB || indexMode == IndexMode.TIME_SERIES)
387+
&& indexSettings.useDocValuesSkipper()
388+
&& DataStream.TIMESTAMP_FIELD_NAME.equals(fieldName)) {
387389
field = new SortField(getFieldName(), new IndexFieldData.XFieldComparatorSource(missing, localSortMode(), nested) {
388390
@Override
389391
public FieldComparator<?> newComparator(String fieldname, int numHits, Pruning pruning, boolean reversed) {

0 commit comments

Comments
 (0)