|
|
@@ -300,19 +300,23 @@ public class DateFieldMapper extends NumberFieldMapper<Long> {
|
|
|
}
|
|
|
|
|
|
public long parseToMilliseconds(Object value, @Nullable QueryParseContext context, boolean includeUpper) {
|
|
|
- return parseToMilliseconds(value, context, includeUpper, null);
|
|
|
+ return parseToMilliseconds(value, context, includeUpper, null, dateMathParser);
|
|
|
}
|
|
|
|
|
|
- public long parseToMilliseconds(Object value, @Nullable QueryParseContext context, boolean includeUpper, @Nullable DateTimeZone zone) {
|
|
|
+ public long parseToMilliseconds(Object value, @Nullable QueryParseContext context, boolean includeUpper, @Nullable DateTimeZone zone, @Nullable DateMathParser forcedDateParser) {
|
|
|
if (value instanceof Number) {
|
|
|
return ((Number) value).longValue();
|
|
|
}
|
|
|
- return parseToMilliseconds(convertToString(value), context, includeUpper, zone);
|
|
|
+ return parseToMilliseconds(convertToString(value), context, includeUpper, zone, forcedDateParser);
|
|
|
}
|
|
|
|
|
|
- public long parseToMilliseconds(String value, @Nullable QueryParseContext context, boolean includeUpper, @Nullable DateTimeZone zone) {
|
|
|
+ public long parseToMilliseconds(String value, @Nullable QueryParseContext context, boolean includeUpper, @Nullable DateTimeZone zone, @Nullable DateMathParser forcedDateParser) {
|
|
|
long now = context == null ? System.currentTimeMillis() : context.nowInMillis();
|
|
|
- long time = includeUpper && roundCeil ? dateMathParser.parseRoundCeil(value, now, zone) : dateMathParser.parse(value, now, zone);
|
|
|
+ DateMathParser dateParser = dateMathParser;
|
|
|
+ if (forcedDateParser != null) {
|
|
|
+ dateParser = forcedDateParser;
|
|
|
+ }
|
|
|
+ long time = includeUpper && roundCeil ? dateParser.parseRoundCeil(value, now, zone) : dateParser.parse(value, now, zone);
|
|
|
return time;
|
|
|
}
|
|
|
|
|
|
@@ -325,28 +329,28 @@ public class DateFieldMapper extends NumberFieldMapper<Long> {
|
|
|
|
|
|
@Override
|
|
|
public Query rangeQuery(Object lowerTerm, Object upperTerm, boolean includeLower, boolean includeUpper, @Nullable QueryParseContext context) {
|
|
|
- return rangeQuery(lowerTerm, upperTerm, includeLower, includeUpper, null, context);
|
|
|
+ return rangeQuery(lowerTerm, upperTerm, includeLower, includeUpper, null, null, context);
|
|
|
}
|
|
|
|
|
|
- public Query rangeQuery(Object lowerTerm, Object upperTerm, boolean includeLower, boolean includeUpper, @Nullable DateTimeZone timeZone, @Nullable QueryParseContext context) {
|
|
|
+ public Query rangeQuery(Object lowerTerm, Object upperTerm, boolean includeLower, boolean includeUpper, @Nullable DateTimeZone timeZone, @Nullable DateMathParser forcedDateParser, @Nullable QueryParseContext context) {
|
|
|
return NumericRangeQuery.newLongRange(names.indexName(), precisionStep,
|
|
|
- lowerTerm == null ? null : parseToMilliseconds(lowerTerm, context, false, timeZone),
|
|
|
- upperTerm == null ? null : parseToMilliseconds(upperTerm, context, includeUpper, timeZone),
|
|
|
+ lowerTerm == null ? null : parseToMilliseconds(lowerTerm, context, false, timeZone, forcedDateParser == null ? dateMathParser : forcedDateParser),
|
|
|
+ upperTerm == null ? null : parseToMilliseconds(upperTerm, context, includeUpper, timeZone, forcedDateParser == null ? dateMathParser : forcedDateParser),
|
|
|
includeLower, includeUpper);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public Filter rangeFilter(Object lowerTerm, Object upperTerm, boolean includeLower, boolean includeUpper, @Nullable QueryParseContext context) {
|
|
|
- return rangeFilter(lowerTerm, upperTerm, includeLower, includeUpper, null, context, null);
|
|
|
+ return rangeFilter(lowerTerm, upperTerm, includeLower, includeUpper, null, null, context, null);
|
|
|
}
|
|
|
|
|
|
- public Filter rangeFilter(Object lowerTerm, Object upperTerm, boolean includeLower, boolean includeUpper, @Nullable DateTimeZone timeZone, @Nullable QueryParseContext context, @Nullable Boolean explicitCaching) {
|
|
|
- return rangeFilter(null, lowerTerm, upperTerm, includeLower, includeUpper, timeZone, context, explicitCaching);
|
|
|
+ public Filter rangeFilter(Object lowerTerm, Object upperTerm, boolean includeLower, boolean includeUpper, @Nullable DateTimeZone timeZone, @Nullable DateMathParser forcedDateParser, @Nullable QueryParseContext context, @Nullable Boolean explicitCaching) {
|
|
|
+ return rangeFilter(null, lowerTerm, upperTerm, includeLower, includeUpper, timeZone, forcedDateParser, context, explicitCaching);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public Filter rangeFilter(QueryParseContext parseContext, Object lowerTerm, Object upperTerm, boolean includeLower, boolean includeUpper, @Nullable QueryParseContext context) {
|
|
|
- return rangeFilter(parseContext, lowerTerm, upperTerm, includeLower, includeUpper, null, context, null);
|
|
|
+ return rangeFilter(parseContext, lowerTerm, upperTerm, includeLower, includeUpper, null, null, context, null);
|
|
|
}
|
|
|
|
|
|
/*
|
|
|
@@ -355,7 +359,7 @@ public class DateFieldMapper extends NumberFieldMapper<Long> {
|
|
|
* - the object to parse is a String (does not apply to ms since epoch which are UTC based time values)
|
|
|
* - the String to parse does not have already a timezone defined (ie. `2014-01-01T00:00:00+03:00`)
|
|
|
*/
|
|
|
- public Filter rangeFilter(QueryParseContext parseContext, Object lowerTerm, Object upperTerm, boolean includeLower, boolean includeUpper, @Nullable DateTimeZone timeZone, @Nullable QueryParseContext context, @Nullable Boolean explicitCaching) {
|
|
|
+ public Filter rangeFilter(QueryParseContext parseContext, Object lowerTerm, Object upperTerm, boolean includeLower, boolean includeUpper, @Nullable DateTimeZone timeZone, @Nullable DateMathParser forcedDateParser, @Nullable QueryParseContext context, @Nullable Boolean explicitCaching) {
|
|
|
boolean cache;
|
|
|
boolean cacheable = true;
|
|
|
Long lowerVal = null;
|
|
|
@@ -366,7 +370,7 @@ public class DateFieldMapper extends NumberFieldMapper<Long> {
|
|
|
} else {
|
|
|
String value = convertToString(lowerTerm);
|
|
|
cacheable = !hasDateExpressionWithNoRounding(value);
|
|
|
- lowerVal = parseToMilliseconds(value, context, false, timeZone);
|
|
|
+ lowerVal = parseToMilliseconds(value, context, false, timeZone, forcedDateParser);
|
|
|
}
|
|
|
}
|
|
|
if (upperTerm != null) {
|
|
|
@@ -375,7 +379,7 @@ public class DateFieldMapper extends NumberFieldMapper<Long> {
|
|
|
} else {
|
|
|
String value = convertToString(upperTerm);
|
|
|
cacheable = cacheable && !hasDateExpressionWithNoRounding(value);
|
|
|
- upperVal = parseToMilliseconds(value, context, includeUpper, timeZone);
|
|
|
+ upperVal = parseToMilliseconds(value, context, includeUpper, timeZone, forcedDateParser);
|
|
|
}
|
|
|
}
|
|
|
|