summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicholas Knize <nknize@gmail.com>2017-05-19 15:00:48 -0500
committerNicholas Knize <nknize@gmail.com>2017-05-22 11:41:16 -0500
commitb41ad0a9dd997b270547154bf03ecb0e4f6c8772 (patch)
tree82a20ad2115807a0dcab446439e81bc4d1683903
parent6f19c7097843e98682b0b09bf5a17b9b88c74614 (diff)
Fix RangeFieldMapper rangeQuery to properly handle relations
This commit fixes the RangeFieldMapper and RangeQueryBuilder to pass the correct relation to the RangeQuery when performing a range query over range fields.
-rw-r--r--core/src/main/java/org/elasticsearch/index/mapper/RangeFieldMapper.java6
-rw-r--r--core/src/main/java/org/elasticsearch/index/query/RangeQueryBuilder.java4
-rw-r--r--core/src/test/java/org/elasticsearch/index/query/RangeQueryBuilderTests.java6
-rw-r--r--core/src/test/java/org/elasticsearch/search/query/SearchQueryIT.java17
4 files changed, 22 insertions, 11 deletions
diff --git a/core/src/main/java/org/elasticsearch/index/mapper/RangeFieldMapper.java b/core/src/main/java/org/elasticsearch/index/mapper/RangeFieldMapper.java
index f1bb866377..12854c2578 100644
--- a/core/src/main/java/org/elasticsearch/index/mapper/RangeFieldMapper.java
+++ b/core/src/main/java/org/elasticsearch/index/mapper/RangeFieldMapper.java
@@ -279,12 +279,6 @@ public class RangeFieldMapper extends FieldMapper {
return query;
}
- @Override
- public Query rangeQuery(Object lowerTerm, Object upperTerm, boolean includeLower, boolean includeUpper,
- QueryShardContext context) {
- return rangeQuery(lowerTerm, upperTerm, includeLower, includeUpper, ShapeRelation.INTERSECTS, context);
- }
-
public Query rangeQuery(Object lowerTerm, Object upperTerm, boolean includeLower, boolean includeUpper,
ShapeRelation relation, QueryShardContext context) {
failIfNotIndexed();
diff --git a/core/src/main/java/org/elasticsearch/index/query/RangeQueryBuilder.java b/core/src/main/java/org/elasticsearch/index/query/RangeQueryBuilder.java
index 033488759e..23d37a2743 100644
--- a/core/src/main/java/org/elasticsearch/index/query/RangeQueryBuilder.java
+++ b/core/src/main/java/org/elasticsearch/index/query/RangeQueryBuilder.java
@@ -501,9 +501,9 @@ public class RangeQueryBuilder extends AbstractQueryBuilder<RangeQueryBuilder> i
query = ((DateFieldMapper.DateFieldType) mapper).rangeQuery(from, to, includeLower, includeUpper,
timeZone, getForceDateParser(), context);
- } else if (mapper instanceof RangeFieldMapper.RangeFieldType && mapper.typeName() == RangeFieldMapper.RangeType.DATE.name) {
+ } else if (mapper instanceof RangeFieldMapper.RangeFieldType) {
DateMathParser forcedDateParser = null;
- if (this.format != null) {
+ if (mapper.typeName() == RangeFieldMapper.RangeType.DATE.name && this.format != null) {
forcedDateParser = new DateMathParser(this.format);
}
query = ((RangeFieldMapper.RangeFieldType) mapper).rangeQuery(from, to, includeLower, includeUpper,
diff --git a/core/src/test/java/org/elasticsearch/index/query/RangeQueryBuilderTests.java b/core/src/test/java/org/elasticsearch/index/query/RangeQueryBuilderTests.java
index ddf21f1d6f..c1f212aaef 100644
--- a/core/src/test/java/org/elasticsearch/index/query/RangeQueryBuilderTests.java
+++ b/core/src/test/java/org/elasticsearch/index/query/RangeQueryBuilderTests.java
@@ -84,9 +84,6 @@ public class RangeQueryBuilderTests extends AbstractQueryTestCase<RangeQueryBuil
query.format("yyyy-MM-dd'T'HH:mm:ss.SSSZZ");
}
}
- if (query.fieldName().equals(DATE_RANGE_FIELD_NAME)) {
- query.relation(RandomPicks.randomFrom(random(), ShapeRelation.values()).getRelationName());
- }
break;
case 2:
default:
@@ -102,6 +99,9 @@ public class RangeQueryBuilderTests extends AbstractQueryTestCase<RangeQueryBuil
if (randomBoolean()) {
query.to(null);
}
+ if (query.fieldName().equals(INT_RANGE_FIELD_NAME) || query.fieldName().equals(DATE_RANGE_FIELD_NAME)) {
+ query.relation(RandomPicks.randomFrom(random(), ShapeRelation.values()).getRelationName());
+ }
return query;
}
diff --git a/core/src/test/java/org/elasticsearch/search/query/SearchQueryIT.java b/core/src/test/java/org/elasticsearch/search/query/SearchQueryIT.java
index 47c0716075..3a9f04ed4f 100644
--- a/core/src/test/java/org/elasticsearch/search/query/SearchQueryIT.java
+++ b/core/src/test/java/org/elasticsearch/search/query/SearchQueryIT.java
@@ -37,6 +37,7 @@ import org.elasticsearch.index.query.MatchQueryBuilder;
import org.elasticsearch.index.query.MultiMatchQueryBuilder;
import org.elasticsearch.index.query.Operator;
import org.elasticsearch.index.query.QueryBuilders;
+import org.elasticsearch.index.query.RangeQueryBuilder;
import org.elasticsearch.index.query.TermQueryBuilder;
import org.elasticsearch.index.query.WrapperQueryBuilder;
import org.elasticsearch.index.query.functionscore.ScoreFunctionBuilders;
@@ -2090,4 +2091,20 @@ public class SearchQueryIT extends ESIntegTestCase {
assertThat(i + " expected: " + first + " actual: " + actual, Float.compare(first, actual), equalTo(0));
}
}
+
+ public void testRangeQueryRangeFields_24744() throws Exception {
+ assertAcked(prepareCreate("test")
+ .addMapping("type1", "int_range", "type=integer_range"));
+
+ client().prepareIndex("test", "type1", "1")
+ .setSource(jsonBuilder()
+ .startObject()
+ .startObject("int_range").field("gte", 10).field("lte", 20).endObject()
+ .endObject()).get();
+ refresh();
+
+ RangeQueryBuilder range = new RangeQueryBuilder("int_range").relation("intersects").from(Integer.MIN_VALUE).to(Integer.MAX_VALUE);
+ SearchResponse searchResponse = client().prepareSearch("test").setQuery(range).get();
+ assertHitCount(searchResponse, 1);
+ }
}