summaryrefslogtreecommitdiff
path: root/core/src/test/java/org/elasticsearch
diff options
context:
space:
mode:
authorAdrien Grand <jpountz@gmail.com>2016-03-24 18:27:18 +0100
committerAdrien Grand <jpountz@gmail.com>2016-04-01 10:28:58 +0200
commit4c4bbb3e45931c67d4fbdc71cebb7ecd0645eedd (patch)
tree4ea8ee65197e933d50b5df2631ba6ef5b41d0a25 /core/src/test/java/org/elasticsearch
parent11fdd2608fa0d060289315755297161a8ffe9c80 (diff)
Replace FieldStatsProvider with a method on MappedFieldType. #17334
FieldStatsProvider had to perform instanceof calls to properly handle dates or ip addresses. By moving the logic to MappedFieldType, each field type can check whether all values are within bounds its way. Note that this commit only keeps rewriting support for dates, which are the only field for which the rewriting mechanism is likely to help (because of time-based indices).
Diffstat (limited to 'core/src/test/java/org/elasticsearch')
-rw-r--r--core/src/test/java/org/elasticsearch/index/fieldstats/FieldStatsProviderTests.java446
-rw-r--r--core/src/test/java/org/elasticsearch/index/mapper/core/DateFieldTypeTests.java70
-rw-r--r--core/src/test/java/org/elasticsearch/index/mapper/core/DoubleFieldTypeTests.java11
-rw-r--r--core/src/test/java/org/elasticsearch/index/mapper/core/FloatFieldTypeTests.java11
-rw-r--r--core/src/test/java/org/elasticsearch/index/mapper/core/IntegerFieldTypeTests.java11
-rw-r--r--core/src/test/java/org/elasticsearch/index/mapper/core/KeywordFieldTypeTests.java15
-rw-r--r--core/src/test/java/org/elasticsearch/index/mapper/core/LongFieldTypeTests.java11
-rw-r--r--core/src/test/java/org/elasticsearch/index/percolator/PercolatorQueryCacheTests.java2
-rw-r--r--core/src/test/java/org/elasticsearch/index/query/AbstractQueryTestCase.java3
-rw-r--r--core/src/test/java/org/elasticsearch/index/query/QueryShardContextTests.java2
-rw-r--r--core/src/test/java/org/elasticsearch/index/query/RangeQueryBuilderTests.java432
-rw-r--r--core/src/test/java/org/elasticsearch/index/query/RangeQueryRewriteTests.java81
-rw-r--r--core/src/test/java/org/elasticsearch/indices/IndicesRequestCacheIT.java50
-rw-r--r--core/src/test/java/org/elasticsearch/search/highlight/HighlightBuilderTests.java2
-rw-r--r--core/src/test/java/org/elasticsearch/search/rescore/QueryRescoreBuilderTests.java2
-rw-r--r--core/src/test/java/org/elasticsearch/search/sort/AbstractSortTestCase.java2
16 files changed, 258 insertions, 893 deletions
diff --git a/core/src/test/java/org/elasticsearch/index/fieldstats/FieldStatsProviderTests.java b/core/src/test/java/org/elasticsearch/index/fieldstats/FieldStatsProviderTests.java
deleted file mode 100644
index 9cad8d3fc8..0000000000
--- a/core/src/test/java/org/elasticsearch/index/fieldstats/FieldStatsProviderTests.java
+++ /dev/null
@@ -1,446 +0,0 @@
-/*
- * Licensed to Elasticsearch under one or more contributor
- * license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright
- * ownership. Elasticsearch licenses this file to you under
- * the Apache License, Version 2.0 (the "License"); you may
- * not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.elasticsearch.index.fieldstats;
-
-import org.apache.lucene.index.DirectoryReader;
-import org.apache.lucene.index.IndexWriter;
-import org.apache.lucene.search.IndexSearcher;
-import org.apache.lucene.store.BaseDirectoryWrapper;
-import org.apache.lucene.util.BytesRef;
-import org.elasticsearch.common.compress.CompressedXContent;
-import org.elasticsearch.common.lucene.index.ElasticsearchDirectoryReader;
-import org.elasticsearch.common.settings.Settings;
-import org.elasticsearch.common.xcontent.XContentBuilder;
-import org.elasticsearch.common.xcontent.json.JsonXContent;
-import org.elasticsearch.env.Environment;
-import org.elasticsearch.index.IndexSettings;
-import org.elasticsearch.index.analysis.AnalysisRegistry;
-import org.elasticsearch.index.analysis.AnalysisService;
-import org.elasticsearch.index.engine.Engine;
-import org.elasticsearch.index.engine.Engine.Searcher;
-import org.elasticsearch.index.fieldstats.FieldStatsProvider.Relation;
-import org.elasticsearch.index.mapper.DocumentMapper;
-import org.elasticsearch.index.mapper.MapperService;
-import org.elasticsearch.index.mapper.MapperService.MergeReason;
-import org.elasticsearch.index.mapper.ParsedDocument;
-import org.elasticsearch.index.shard.ShardId;
-import org.elasticsearch.index.similarity.SimilarityService;
-import org.elasticsearch.indices.IndicesModule;
-import org.elasticsearch.indices.mapper.MapperRegistry;
-import org.elasticsearch.test.ESTestCase;
-import org.elasticsearch.test.IndexSettingsModule;
-import org.joda.time.DateTime;
-import org.joda.time.DateTimeZone;
-import org.joda.time.chrono.ISOChronology;
-import org.junit.After;
-import org.junit.Before;
-
-import java.io.IOException;
-import java.util.Collections;
-
-import static org.elasticsearch.common.settings.Settings.settingsBuilder;
-import static org.hamcrest.Matchers.equalTo;
-
-public class FieldStatsProviderTests extends ESTestCase {
-
- private DirectoryReader directoryReader;
- private Searcher searcher;
- private FieldStatsProvider fieldStatsProvider;
- private BaseDirectoryWrapper dir;
- private AnalysisRegistry analysisRegistry;
-
- @Before
- public void setup() throws IOException {
- Settings nodeSettings = settingsBuilder().put(Environment.PATH_HOME_SETTING.getKey(), createTempDir()).build();
- IndexSettings settings = IndexSettingsModule.newIndexSettings("_na", nodeSettings);
- SimilarityService similarityService = new SimilarityService(settings, Collections.emptyMap());
- analysisRegistry = new AnalysisRegistry(null, new Environment(nodeSettings));
- AnalysisService analysisService = analysisRegistry.build(settings);
- IndicesModule indicesModule = new IndicesModule();
- MapperRegistry mapperRegistry = indicesModule.getMapperRegistry();
- MapperService service = new MapperService(settings, analysisService, similarityService, mapperRegistry, () -> null);
- putMapping(service);
- dir = newDirectory();
- IndexWriter w = new IndexWriter(dir, newIndexWriterConfig());
- indexDocument(service, w, "1", 50L, 50.2f, 50.2, "cherry", new DateTime(2014, 1, 1, 0, 0, 0, ISOChronology.getInstanceUTC()),
- "10.10.0.10");
- indexDocument(service, w, "2", 60L, 60.1f, 60.1, "damson", new DateTime(2014, 2, 1, 0, 0, 0, ISOChronology.getInstanceUTC()),
- "10.10.0.20");
- indexDocument(service, w, "3", 70L, 70.6f, 70.6, "grape", new DateTime(2014, 3, 1, 0, 0, 0, ISOChronology.getInstanceUTC()),
- "10.10.0.30");
- indexDocument(service, w, "4", 80L, 80.2f, 80.2, "kiwi", new DateTime(2014, 4, 1, 0, 0, 0, ISOChronology.getInstanceUTC()),
- "10.10.0.40");
- indexDocument(service, w, "5", 90L, 90.4f, 90.4, "lemon", new DateTime(2014, 5, 1, 0, 0, 0, ISOChronology.getInstanceUTC()),
- "10.10.0.50");
- indexDocument(service, w, "6", 100L, 100.3f, 100.3, "orange", new DateTime(2014, 6, 1, 0, 0, 0, ISOChronology.getInstanceUTC()),
- "10.10.0.60");
- directoryReader = DirectoryReader.open(w, true, true);
- w.close();
- ShardId shard = new ShardId("index", "_na_", 0);
- directoryReader = ElasticsearchDirectoryReader.wrap(directoryReader, shard);
- IndexSearcher s = new IndexSearcher(directoryReader);
- searcher = new Engine.Searcher("test", s);
- fieldStatsProvider = new FieldStatsProvider(searcher, service);
- }
-
- @After
- public void teardown() throws IOException {
- searcher.close();
- directoryReader.close();
- dir.close();
- analysisRegistry.close();
- }
-
- public void testiIsFieldWithinQueryLong() throws IOException {
- assertThat(fieldStatsProvider.isFieldWithinQuery("long_field", 10L, 200L, true, true, DateTimeZone.UTC, null),
- equalTo(Relation.WITHIN));
- assertThat(fieldStatsProvider.isFieldWithinQuery("long_field", 10L, null, true, true, DateTimeZone.UTC, null),
- equalTo(Relation.WITHIN));
- assertThat(fieldStatsProvider.isFieldWithinQuery("long_field", null, 200L, true, true, DateTimeZone.UTC, null),
- equalTo(Relation.WITHIN));
- assertThat(fieldStatsProvider.isFieldWithinQuery("long_field", null, null, true, true, DateTimeZone.UTC, null),
- equalTo(Relation.WITHIN));
- assertThat(fieldStatsProvider.isFieldWithinQuery("long_field", 10L, 100L, true, true, DateTimeZone.UTC, null),
- equalTo(Relation.WITHIN));
- assertThat(fieldStatsProvider.isFieldWithinQuery("long_field", 50L, 200L, true, true, DateTimeZone.UTC, null),
- equalTo(Relation.WITHIN));
- assertThat(fieldStatsProvider.isFieldWithinQuery("long_field", 30L, 80L, true, true, DateTimeZone.UTC, null),
- equalTo(Relation.INTERSECTS));
- assertThat(fieldStatsProvider.isFieldWithinQuery("long_field", 80L, 200L, true, true, DateTimeZone.UTC, null),
- equalTo(Relation.INTERSECTS));
- assertThat(fieldStatsProvider.isFieldWithinQuery("long_field", 60L, 80L, true, true, DateTimeZone.UTC, null),
- equalTo(Relation.INTERSECTS));
- assertThat(fieldStatsProvider.isFieldWithinQuery("long_field", 10L, 100L, true, false, DateTimeZone.UTC, null),
- equalTo(Relation.INTERSECTS));
- assertThat(fieldStatsProvider.isFieldWithinQuery("long_field", 50L, 200L, false, true, DateTimeZone.UTC, null),
- equalTo(Relation.INTERSECTS));
- assertThat(fieldStatsProvider.isFieldWithinQuery("long_field", 100L, 200L, true, true, DateTimeZone.UTC, null),
- equalTo(Relation.INTERSECTS));
- assertThat(fieldStatsProvider.isFieldWithinQuery("long_field", 1L, 50L, true, true, DateTimeZone.UTC, null),
- equalTo(Relation.INTERSECTS));
- assertThat(fieldStatsProvider.isFieldWithinQuery("long_field", 150L, 200L, true, true, DateTimeZone.UTC, null),
- equalTo(Relation.DISJOINT));
- assertThat(fieldStatsProvider.isFieldWithinQuery("long_field", 1L, 8L, true, true, DateTimeZone.UTC, null),
- equalTo(Relation.DISJOINT));
- assertThat(fieldStatsProvider.isFieldWithinQuery("long_field", null, 8L, true, true, DateTimeZone.UTC, null),
- equalTo(Relation.DISJOINT));
- assertThat(fieldStatsProvider.isFieldWithinQuery("long_field", 150L, null, true, true, DateTimeZone.UTC, null),
- equalTo(Relation.DISJOINT));
- assertThat(fieldStatsProvider.isFieldWithinQuery("long_field", 100L, 200L, false, true, DateTimeZone.UTC, null),
- equalTo(Relation.DISJOINT));
- assertThat(fieldStatsProvider.isFieldWithinQuery("long_field", 1L, 50L, true, false, DateTimeZone.UTC, null),
- equalTo(Relation.DISJOINT));
- }
-
- public void testiIsFieldWithinQueryFloat() throws IOException {
- assertThat(fieldStatsProvider.isFieldWithinQuery("float_field", 10.8f, 200.5f, true, true, DateTimeZone.UTC, null),
- equalTo(Relation.WITHIN));
- assertThat(fieldStatsProvider.isFieldWithinQuery("float_field", 10.8f, null, true, true, DateTimeZone.UTC, null),
- equalTo(Relation.WITHIN));
- assertThat(fieldStatsProvider.isFieldWithinQuery("float_field", null, 200.5f, true, true, DateTimeZone.UTC, null),
- equalTo(Relation.WITHIN));
- assertThat(fieldStatsProvider.isFieldWithinQuery("float_field", null, null, true, true, DateTimeZone.UTC, null),
- equalTo(Relation.WITHIN));
- assertThat(fieldStatsProvider.isFieldWithinQuery("float_field", 10.8f, 100.3f, true, true, DateTimeZone.UTC, null),
- equalTo(Relation.WITHIN));
- assertThat(fieldStatsProvider.isFieldWithinQuery("float_field", 50.2f, 200.5f, true, true, DateTimeZone.UTC, null),
- equalTo(Relation.WITHIN));
- assertThat(fieldStatsProvider.isFieldWithinQuery("float_field", 30.5f, 80.1f, true, true, DateTimeZone.UTC, null),
- equalTo(Relation.INTERSECTS));
- assertThat(fieldStatsProvider.isFieldWithinQuery("float_field", 80.1f, 200.5f, true, true, DateTimeZone.UTC, null),
- equalTo(Relation.INTERSECTS));
- assertThat(fieldStatsProvider.isFieldWithinQuery("float_field", 10.8f, 100.3f, true, false, DateTimeZone.UTC, null),
- equalTo(Relation.INTERSECTS));
- assertThat(fieldStatsProvider.isFieldWithinQuery("float_field", 50.2f, 200.5f, false, true, DateTimeZone.UTC, null),
- equalTo(Relation.INTERSECTS));
- assertThat(fieldStatsProvider.isFieldWithinQuery("float_field", 100.3f, 200.5f, true, true, DateTimeZone.UTC, null),
- equalTo(Relation.INTERSECTS));
- assertThat(fieldStatsProvider.isFieldWithinQuery("float_field", 1.9f, 50.2f, true, true, DateTimeZone.UTC, null),
- equalTo(Relation.INTERSECTS));
- assertThat(fieldStatsProvider.isFieldWithinQuery("float_field", 60.9f, 80.1f, true, true, DateTimeZone.UTC, null),
- equalTo(Relation.INTERSECTS));
- assertThat(fieldStatsProvider.isFieldWithinQuery("float_field", 150.4f, 200.5f, true, true, DateTimeZone.UTC, null),
- equalTo(Relation.DISJOINT));
- assertThat(fieldStatsProvider.isFieldWithinQuery("float_field", 1.9f, 8.1f, true, true, DateTimeZone.UTC, null),
- equalTo(Relation.DISJOINT));
- assertThat(fieldStatsProvider.isFieldWithinQuery("float_field", null, 8.1f, true, true, DateTimeZone.UTC, null),
- equalTo(Relation.DISJOINT));
- assertThat(fieldStatsProvider.isFieldWithinQuery("float_field", 150.4f, null, true, true, DateTimeZone.UTC, null),
- equalTo(Relation.DISJOINT));
- assertThat(fieldStatsProvider.isFieldWithinQuery("float_field", 100.3f, 200.5f, false, true, DateTimeZone.UTC, null),
- equalTo(Relation.DISJOINT));
- assertThat(fieldStatsProvider.isFieldWithinQuery("float_field", 1.9f, 50.2f, true, false, DateTimeZone.UTC, null),
- equalTo(Relation.DISJOINT));
- }
-
- public void testiIsFieldWithinQueryDouble() throws IOException {
- assertThat(fieldStatsProvider.isFieldWithinQuery("double_field", 10.8, 200.5, true, true, DateTimeZone.UTC, null),
- equalTo(Relation.WITHIN));
- assertThat(fieldStatsProvider.isFieldWithinQuery("double_field", 10.8, null, true, true, DateTimeZone.UTC, null),
- equalTo(Relation.WITHIN));
- assertThat(fieldStatsProvider.isFieldWithinQuery("double_field", null, 200.5, true, true, DateTimeZone.UTC, null),
- equalTo(Relation.WITHIN));
- assertThat(fieldStatsProvider.isFieldWithinQuery("double_field", null, null, true, true, DateTimeZone.UTC, null),
- equalTo(Relation.WITHIN));
- assertThat(fieldStatsProvider.isFieldWithinQuery("double_field", 10.8, 100.3, true, true, DateTimeZone.UTC, null),
- equalTo(Relation.WITHIN));
- assertThat(fieldStatsProvider.isFieldWithinQuery("double_field", 50.2, 200.5, true, true, DateTimeZone.UTC, null),
- equalTo(Relation.WITHIN));
- assertThat(fieldStatsProvider.isFieldWithinQuery("double_field", 30.5, 80.1, true, true, DateTimeZone.UTC, null),
- equalTo(Relation.INTERSECTS));
- assertThat(fieldStatsProvider.isFieldWithinQuery("double_field", 80.1, 200.5, true, true, DateTimeZone.UTC, null),
- equalTo(Relation.INTERSECTS));
- assertThat(fieldStatsProvider.isFieldWithinQuery("double_field", 60.9, 80.1, true, true, DateTimeZone.UTC, null),
- equalTo(Relation.INTERSECTS));
- assertThat(fieldStatsProvider.isFieldWithinQuery("double_field", 10.8, 100.3, true, false, DateTimeZone.UTC, null),
- equalTo(Relation.INTERSECTS));
- assertThat(fieldStatsProvider.isFieldWithinQuery("double_field", 50.2, 200.5, false, true, DateTimeZone.UTC, null),
- equalTo(Relation.INTERSECTS));
- assertThat(fieldStatsProvider.isFieldWithinQuery("double_field", 100.3, 200.5, true, true, DateTimeZone.UTC, null),
- equalTo(Relation.INTERSECTS));
- assertThat(fieldStatsProvider.isFieldWithinQuery("double_field", 1.9, 50.2, true, true, DateTimeZone.UTC, null),
- equalTo(Relation.INTERSECTS));
- assertThat(fieldStatsProvider.isFieldWithinQuery("double_field", 150.4, 200.5, true, true, DateTimeZone.UTC, null),
- equalTo(Relation.DISJOINT));
- assertThat(fieldStatsProvider.isFieldWithinQuery("double_field", 1.9, 8.1, true, true, DateTimeZone.UTC, null),
- equalTo(Relation.DISJOINT));
- assertThat(fieldStatsProvider.isFieldWithinQuery("double_field", null, 8.1, true, true, DateTimeZone.UTC, null),
- equalTo(Relation.DISJOINT));
- assertThat(fieldStatsProvider.isFieldWithinQuery("double_field", 150.4, null, true, true, DateTimeZone.UTC, null),
- equalTo(Relation.DISJOINT));
- assertThat(fieldStatsProvider.isFieldWithinQuery("long_field", 100.3, 200.5, false, true, DateTimeZone.UTC, null),
- equalTo(Relation.DISJOINT));
- assertThat(fieldStatsProvider.isFieldWithinQuery("long_field", 1.9, 50.2, true, false, DateTimeZone.UTC, null),
- equalTo(Relation.DISJOINT));
- }
-
- public void testiIsFieldWithinQueryText() throws IOException {
- assertThat(fieldStatsProvider.isFieldWithinQuery("text_field", new BytesRef("banana"), new BytesRef("zebra"), true, true,
- DateTimeZone.UTC, null), equalTo(Relation.WITHIN));
- assertThat(fieldStatsProvider.isFieldWithinQuery("text_field", new BytesRef("banana"), null, true, true, DateTimeZone.UTC, null),
- equalTo(Relation.WITHIN));
- assertThat(fieldStatsProvider.isFieldWithinQuery("text_field", null, new BytesRef("zebra"), true, true, DateTimeZone.UTC, null),
- equalTo(Relation.WITHIN));
- assertThat(fieldStatsProvider.isFieldWithinQuery("text_field", null, null, true, true, DateTimeZone.UTC, null),
- equalTo(Relation.WITHIN));
- assertThat(fieldStatsProvider.isFieldWithinQuery("text_field", new BytesRef("banana"), new BytesRef("orange"), true, true,
- DateTimeZone.UTC, null), equalTo(Relation.WITHIN));
- assertThat(fieldStatsProvider.isFieldWithinQuery("text_field", new BytesRef("cherry"), new BytesRef("zebra"), true, true,
- DateTimeZone.UTC, null), equalTo(Relation.WITHIN));
- assertThat(fieldStatsProvider.isFieldWithinQuery("text_field", new BytesRef("banana"), new BytesRef("grape"), true, true,
- DateTimeZone.UTC, null), equalTo(Relation.INTERSECTS));
- assertThat(fieldStatsProvider.isFieldWithinQuery("text_field", new BytesRef("grape"), new BytesRef("zebra"), true, true,
- DateTimeZone.UTC, null), equalTo(Relation.INTERSECTS));
- assertThat(fieldStatsProvider.isFieldWithinQuery("text_field", new BytesRef("lime"), new BytesRef("mango"), true, true,
- DateTimeZone.UTC, null), equalTo(Relation.INTERSECTS));
- assertThat(fieldStatsProvider.isFieldWithinQuery("text_field", new BytesRef("banana"), new BytesRef("orange"), true, false,
- DateTimeZone.UTC, null), equalTo(Relation.INTERSECTS));
- assertThat(fieldStatsProvider.isFieldWithinQuery("text_field", new BytesRef("cherry"), new BytesRef("zebra"), false, true,
- DateTimeZone.UTC, null), equalTo(Relation.INTERSECTS));
- assertThat(fieldStatsProvider.isFieldWithinQuery("text_field", new BytesRef("orange"), new BytesRef("zebra"), true, true,
- DateTimeZone.UTC, null), equalTo(Relation.INTERSECTS));
- assertThat(fieldStatsProvider.isFieldWithinQuery("text_field", new BytesRef("apple"), new BytesRef("cherry"), true, true,
- DateTimeZone.UTC, null), equalTo(Relation.INTERSECTS));
- assertThat(fieldStatsProvider.isFieldWithinQuery("text_field", new BytesRef("peach"), new BytesRef("zebra"), true, true,
- DateTimeZone.UTC, null), equalTo(Relation.DISJOINT));
- assertThat(fieldStatsProvider.isFieldWithinQuery("text_field", new BytesRef("apple"), new BytesRef("banana"), true, true,
- DateTimeZone.UTC, null), equalTo(Relation.DISJOINT));
- assertThat(fieldStatsProvider.isFieldWithinQuery("text_field", null, new BytesRef("banana"), true, true, DateTimeZone.UTC, null),
- equalTo(Relation.DISJOINT));
- assertThat(fieldStatsProvider.isFieldWithinQuery("text_field", new BytesRef("peach"), null, true, true, DateTimeZone.UTC, null),
- equalTo(Relation.DISJOINT));
- assertThat(fieldStatsProvider.isFieldWithinQuery("text_field", new BytesRef("orange"), new BytesRef("zebra"), false, true,
- DateTimeZone.UTC, null), equalTo(Relation.DISJOINT));
- assertThat(fieldStatsProvider.isFieldWithinQuery("text_field", new BytesRef("apple"), new BytesRef("cherry"), true, false,
- DateTimeZone.UTC, null), equalTo(Relation.DISJOINT));
- }
-
- public void testiIsFieldWithinQueryKeyword() throws IOException {
- assertThat(fieldStatsProvider.isFieldWithinQuery("keyword_field", new BytesRef("banana"), new BytesRef("zebra"), true, true,
- DateTimeZone.UTC, null), equalTo(Relation.WITHIN));
- assertThat(fieldStatsProvider.isFieldWithinQuery("keyword_field", new BytesRef("banana"), null, true, true, DateTimeZone.UTC, null),
- equalTo(Relation.WITHIN));
- assertThat(fieldStatsProvider.isFieldWithinQuery("keyword_field", null, new BytesRef("zebra"), true, true, DateTimeZone.UTC, null),
- equalTo(Relation.WITHIN));
- assertThat(fieldStatsProvider.isFieldWithinQuery("keyword_field", null, null, true, true, DateTimeZone.UTC, null),
- equalTo(Relation.WITHIN));
- assertThat(fieldStatsProvider.isFieldWithinQuery("keyword_field", new BytesRef("banana"), new BytesRef("orange"), true, true,
- DateTimeZone.UTC, null), equalTo(Relation.WITHIN));
- assertThat(fieldStatsProvider.isFieldWithinQuery("keyword_field", new BytesRef("cherry"), new BytesRef("zebra"), true, true,
- DateTimeZone.UTC, null), equalTo(Relation.WITHIN));
- assertThat(fieldStatsProvider.isFieldWithinQuery("keyword_field", new BytesRef("banana"), new BytesRef("grape"), true, true,
- DateTimeZone.UTC, null), equalTo(Relation.INTERSECTS));
- assertThat(fieldStatsProvider.isFieldWithinQuery("keyword_field", new BytesRef("grape"), new BytesRef("zebra"), true, true,
- DateTimeZone.UTC, null), equalTo(Relation.INTERSECTS));
- assertThat(fieldStatsProvider.isFieldWithinQuery("keyword_field", new BytesRef("lime"), new BytesRef("mango"), true, true,
- DateTimeZone.UTC, null), equalTo(Relation.INTERSECTS));
- assertThat(fieldStatsProvider.isFieldWithinQuery("keyword_field", new BytesRef("banana"), new BytesRef("orange"), true, false,
- DateTimeZone.UTC, null), equalTo(Relation.INTERSECTS));
- assertThat(fieldStatsProvider.isFieldWithinQuery("keyword_field", new BytesRef("cherry"), new BytesRef("zebra"), false, true,
- DateTimeZone.UTC, null), equalTo(Relation.INTERSECTS));
- assertThat(fieldStatsProvider.isFieldWithinQuery("keyword_field", new BytesRef("orange"), new BytesRef("zebra"), true, true,
- DateTimeZone.UTC, null), equalTo(Relation.INTERSECTS));
- assertThat(fieldStatsProvider.isFieldWithinQuery("keyword_field", new BytesRef("apple"), new BytesRef("cherry"), true, true,
- DateTimeZone.UTC, null), equalTo(Relation.INTERSECTS));
- assertThat(fieldStatsProvider.isFieldWithinQuery("keyword_field", new BytesRef("peach"), new BytesRef("zebra"), true, true,
- DateTimeZone.UTC, null), equalTo(Relation.DISJOINT));
- assertThat(fieldStatsProvider.isFieldWithinQuery("keyword_field", new BytesRef("apple"), new BytesRef("banana"), true, true,
- DateTimeZone.UTC, null), equalTo(Relation.DISJOINT));
- assertThat(fieldStatsProvider.isFieldWithinQuery("keyword_field", null, new BytesRef("banana"), true, true, DateTimeZone.UTC, null),
- equalTo(Relation.DISJOINT));
- assertThat(fieldStatsProvider.isFieldWithinQuery("keyword_field", new BytesRef("peach"), null, true, true, DateTimeZone.UTC, null),
- equalTo(Relation.DISJOINT));
- assertThat(fieldStatsProvider.isFieldWithinQuery("keyword_field", new BytesRef("orange"), new BytesRef("zebra"), false, true,
- DateTimeZone.UTC, null), equalTo(Relation.DISJOINT));
- assertThat(fieldStatsProvider.isFieldWithinQuery("keyword_field", new BytesRef("apple"), new BytesRef("cherry"), true, false,
- DateTimeZone.UTC, null), equalTo(Relation.DISJOINT));
- }
-
- public void testiIsFieldWithinQueryDate() throws IOException {
- assertThat(fieldStatsProvider.isFieldWithinQuery("date_field", "2013-01-01", "now", true, true, DateTimeZone.UTC, null),
- equalTo(Relation.WITHIN));
- assertThat(fieldStatsProvider.isFieldWithinQuery("date_field", "2013-01-01", null, true, true, DateTimeZone.UTC, null),
- equalTo(Relation.WITHIN));
- assertThat(fieldStatsProvider.isFieldWithinQuery("date_field", null, "now", true, true, DateTimeZone.UTC, null),
- equalTo(Relation.WITHIN));
- assertThat(fieldStatsProvider.isFieldWithinQuery("date_field", null, null, true, true, DateTimeZone.UTC, null),
- equalTo(Relation.WITHIN));
- assertThat(fieldStatsProvider.isFieldWithinQuery("date_field", "2013-01-01", "2014-06-01", true, true, DateTimeZone.UTC, null),
- equalTo(Relation.WITHIN));
- assertThat(fieldStatsProvider.isFieldWithinQuery("date_field", "2014-01-01", "now", true, true, DateTimeZone.UTC, null),
- equalTo(Relation.WITHIN));
- assertThat(fieldStatsProvider.isFieldWithinQuery("date_field", "2013-01-01", "2014-03-01", true, true, DateTimeZone.UTC, null),
- equalTo(Relation.INTERSECTS));
- assertThat(fieldStatsProvider.isFieldWithinQuery("date_field", "2014-03-01", "now", true, true, DateTimeZone.UTC, null),
- equalTo(Relation.INTERSECTS));
- assertThat(fieldStatsProvider.isFieldWithinQuery("date_field", "2014-03-01", "2014-05-01", true, true, DateTimeZone.UTC, null),
- equalTo(Relation.INTERSECTS));
- assertThat(fieldStatsProvider.isFieldWithinQuery("date_field", "2013-01-01", "2014-06-01", true, false, DateTimeZone.UTC, null),
- equalTo(Relation.INTERSECTS));
- assertThat(fieldStatsProvider.isFieldWithinQuery("date_field", "2014-01-01", "now", false, true, DateTimeZone.UTC, null),
- equalTo(Relation.INTERSECTS));
- assertThat(fieldStatsProvider.isFieldWithinQuery("date_field", "2014-06-01", "now", true, true, DateTimeZone.UTC, null),
- equalTo(Relation.INTERSECTS));
- assertThat(fieldStatsProvider.isFieldWithinQuery("date_field", "2013-01-01", "2014-01-01", true, true, DateTimeZone.UTC, null),
- equalTo(Relation.INTERSECTS));
- assertThat(fieldStatsProvider.isFieldWithinQuery("date_field", "2015-01-01", "now", true, true, DateTimeZone.UTC, null),
- equalTo(Relation.DISJOINT));
- assertThat(fieldStatsProvider.isFieldWithinQuery("date_field", "2013-01-01", "2013-09-01", true, true, DateTimeZone.UTC, null),
- equalTo(Relation.DISJOINT));
- assertThat(fieldStatsProvider.isFieldWithinQuery("date_field", null, "2013-09-01", true, true, DateTimeZone.UTC, null),
- equalTo(Relation.DISJOINT));
- assertThat(fieldStatsProvider.isFieldWithinQuery("date_field", "2015-01-01", null, true, true, DateTimeZone.UTC, null),
- equalTo(Relation.DISJOINT));
- assertThat(fieldStatsProvider.isFieldWithinQuery("date_field", "2014-06-01", "now", false, true, DateTimeZone.UTC, null),
- equalTo(Relation.DISJOINT));
- assertThat(fieldStatsProvider.isFieldWithinQuery("date_field", "2013-01-01", "2014-01-01", true, false, DateTimeZone.UTC, null),
- equalTo(Relation.DISJOINT));
- }
-
- public void testiIsFieldWithinQueryIp() throws IOException {
- assertThat(fieldStatsProvider.isFieldWithinQuery("ip_field", "10.10.0.1", "10.20.0.1", true, true, DateTimeZone.UTC, null),
- equalTo(Relation.WITHIN));
- assertThat(fieldStatsProvider.isFieldWithinQuery("ip_field", "10.10.0.1", null, true, true, DateTimeZone.UTC, null),
- equalTo(Relation.WITHIN));
- assertThat(fieldStatsProvider.isFieldWithinQuery("ip_field", null, "10.20.0.1", true, true, DateTimeZone.UTC, null),
- equalTo(Relation.WITHIN));
- assertThat(fieldStatsProvider.isFieldWithinQuery("ip_field", null, null, true, true, DateTimeZone.UTC, null),
- equalTo(Relation.WITHIN));
- assertThat(fieldStatsProvider.isFieldWithinQuery("ip_field", "10.10.0.1", "10.10.0.60", true, true, DateTimeZone.UTC, null),
- equalTo(Relation.WITHIN));
- assertThat(fieldStatsProvider.isFieldWithinQuery("ip_field", "10.10.0.10", "10.20.0.1", true, true, DateTimeZone.UTC, null),
- equalTo(Relation.WITHIN));
- assertThat(fieldStatsProvider.isFieldWithinQuery("ip_field", "10.10.0.1", "10.10.0.40", true, true, DateTimeZone.UTC, null),
- equalTo(Relation.INTERSECTS));
- assertThat(fieldStatsProvider.isFieldWithinQuery("ip_field", "10.10.0.40", "10.20.0.1", true, true, DateTimeZone.UTC, null),
- equalTo(Relation.INTERSECTS));
- assertThat(fieldStatsProvider.isFieldWithinQuery("ip_field", "10.10.0.30", "10.10.0.40", true, true, DateTimeZone.UTC, null),
- equalTo(Relation.INTERSECTS));
- assertThat(fieldStatsProvider.isFieldWithinQuery("ip_field", "10.10.0.1", "10.10.0.60", true, false, DateTimeZone.UTC, null),
- equalTo(Relation.INTERSECTS));
- assertThat(fieldStatsProvider.isFieldWithinQuery("ip_field", "10.10.0.10", "10.20.0.1", false, true, DateTimeZone.UTC, null),
- equalTo(Relation.INTERSECTS));
- assertThat(fieldStatsProvider.isFieldWithinQuery("ip_field", "10.10.0.60", "10.20.0.1", true, true, DateTimeZone.UTC, null),
- equalTo(Relation.INTERSECTS));
- assertThat(fieldStatsProvider.isFieldWithinQuery("ip_field", "10.0.0.1", "10.10.0.10", true, true, DateTimeZone.UTC, null),
- equalTo(Relation.INTERSECTS));
- assertThat(fieldStatsProvider.isFieldWithinQuery("ip_field", "10.20.0.10", "10.20.0.1", true, true, DateTimeZone.UTC, null),
- equalTo(Relation.DISJOINT));
- assertThat(fieldStatsProvider.isFieldWithinQuery("ip_field", "10.0.0.1", "10.0.0.100", true, true, DateTimeZone.UTC, null),
- equalTo(Relation.DISJOINT));
- assertThat(fieldStatsProvider.isFieldWithinQuery("ip_field", null, "10.0.0.100", true, true, DateTimeZone.UTC, null),
- equalTo(Relation.DISJOINT));
- assertThat(fieldStatsProvider.isFieldWithinQuery("ip_field", "10.20.0.10", null, true, true, DateTimeZone.UTC, null),
- equalTo(Relation.DISJOINT));
- assertThat(fieldStatsProvider.isFieldWithinQuery("ip_field", "10.10.0.60", "10.20.0.1", false, true, DateTimeZone.UTC, null),
- equalTo(Relation.DISJOINT));
- assertThat(fieldStatsProvider.isFieldWithinQuery("ip_field", "10.0.0.1", "10.10.0.10", true, false, DateTimeZone.UTC, null),
- equalTo(Relation.DISJOINT));
- }
-
- private void putMapping(MapperService service) throws IOException {
- XContentBuilder mappingbuilder = JsonXContent.contentBuilder();
- mappingbuilder.startObject();
- mappingbuilder.startObject("type");
- mappingbuilder.startObject("properties");
- mappingbuilder.startObject("long_field");
- mappingbuilder.field("type", "long");
- mappingbuilder.endObject();
- mappingbuilder.startObject("float_field");
- mappingbuilder.field("type", "float");
- mappingbuilder.endObject();
- mappingbuilder.startObject("double_field");
- mappingbuilder.field("type", "double");
- mappingbuilder.endObject();
- mappingbuilder.startObject("text_field");
- mappingbuilder.field("type", "text");
- mappingbuilder.endObject();
- mappingbuilder.startObject("keyword_field");
- mappingbuilder.field("type", "keyword");
- mappingbuilder.endObject();
- mappingbuilder.startObject("date_field");
- mappingbuilder.field("type", "date");
- mappingbuilder.endObject();
- mappingbuilder.startObject("ip_field");
- mappingbuilder.field("type", "ip");
- mappingbuilder.endObject();
- mappingbuilder.endObject();
- mappingbuilder.endObject();
- mappingbuilder.endObject();
- service.merge("type", new CompressedXContent(mappingbuilder.bytes()), MergeReason.MAPPING_UPDATE, true);
- }
-
- private void indexDocument(MapperService service, IndexWriter writer, String id, long longValue, float floatValue, double doubleValue,
- String stringValue, DateTime dateValue, String ipValue) throws IOException {
- XContentBuilder docBuilder = JsonXContent.contentBuilder();
- docBuilder.startObject();
- docBuilder.field("long_field", longValue);
- docBuilder.field("float_field", floatValue);
- docBuilder.field("double_field", doubleValue);
- docBuilder.field("text_field", stringValue);
- docBuilder.field("keyword_field", stringValue);
- docBuilder.field("date_field", dateValue);
- docBuilder.field("ip_field", ipValue);
- docBuilder.endObject();
- DocumentMapper documentMapper = service.documentMapper("type");
- ParsedDocument doc = documentMapper.parse("index", "type", id, docBuilder.bytes());
- writer.addDocument(doc.rootDoc());
- }
-}
diff --git a/core/src/test/java/org/elasticsearch/index/mapper/core/DateFieldTypeTests.java b/core/src/test/java/org/elasticsearch/index/mapper/core/DateFieldTypeTests.java
index 0e009891cf..089533023d 100644
--- a/core/src/test/java/org/elasticsearch/index/mapper/core/DateFieldTypeTests.java
+++ b/core/src/test/java/org/elasticsearch/index/mapper/core/DateFieldTypeTests.java
@@ -18,11 +18,27 @@
*/
package org.elasticsearch.index.mapper.core;
+import org.apache.lucene.document.Field.Store;
+import org.apache.lucene.document.LegacyLongField;
+import org.apache.lucene.index.DirectoryReader;
+import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.IndexWriter;
+import org.apache.lucene.index.IndexWriterConfig;
+import org.apache.lucene.index.MultiReader;
+import org.apache.lucene.store.Directory;
+import org.apache.lucene.util.IOUtils;
+import org.elasticsearch.common.joda.DateMathParser;
+import org.elasticsearch.common.joda.FormatDateTimeFormatter;
import org.elasticsearch.common.joda.Joda;
import org.elasticsearch.index.mapper.FieldTypeTestCase;
import org.elasticsearch.index.mapper.MappedFieldType;
+import org.elasticsearch.index.mapper.MappedFieldType.Relation;
+import org.elasticsearch.index.mapper.ParseContext.Document;
+import org.elasticsearch.index.mapper.core.DateFieldMapper.DateFieldType;
+import org.joda.time.DateTimeZone;
import org.junit.Before;
+import java.io.IOException;
import java.util.Locale;
import java.util.concurrent.TimeUnit;
@@ -54,4 +70,58 @@ public class DateFieldTypeTests extends FieldTypeTestCase {
}
});
}
+
+ public void testIsFieldWithinQueryEmptyReader() throws IOException {
+ IndexReader reader = new MultiReader();
+ DateFieldType ft = new DateFieldType();
+ ft.setName("my_date");
+ assertEquals(Relation.DISJOINT, ft.isFieldWithinQuery(reader, "2015-10-12", "2016-04-03",
+ randomBoolean(), randomBoolean(), null, null));
+ }
+
+ private void doTestIsFieldWithinQuery(DateFieldType ft, DirectoryReader reader,
+ DateTimeZone zone, DateMathParser alternateFormat) throws IOException {
+ assertEquals(Relation.INTERSECTS, ft.isFieldWithinQuery(reader, "2015-10-09", "2016-01-02",
+ randomBoolean(), randomBoolean(), null, null));
+ assertEquals(Relation.INTERSECTS, ft.isFieldWithinQuery(reader, "2016-01-02", "2016-06-20",
+ randomBoolean(), randomBoolean(), null, null));
+ assertEquals(Relation.INTERSECTS, ft.isFieldWithinQuery(reader, "2016-01-02", "2016-02-12",
+ randomBoolean(), randomBoolean(), null, null));
+ assertEquals(Relation.DISJOINT, ft.isFieldWithinQuery(reader, "2014-01-02", "2015-02-12",
+ randomBoolean(), randomBoolean(), null, null));
+ assertEquals(Relation.DISJOINT, ft.isFieldWithinQuery(reader, "2016-05-11", "2016-08-30",
+ randomBoolean(), randomBoolean(), null, null));
+ assertEquals(Relation.WITHIN, ft.isFieldWithinQuery(reader, "2015-09-25", "2016-05-29",
+ randomBoolean(), randomBoolean(), null, null));
+ assertEquals(Relation.WITHIN, ft.isFieldWithinQuery(reader, "2015-10-12", "2016-04-03",
+ true, true, null, null));
+ assertEquals(Relation.INTERSECTS, ft.isFieldWithinQuery(reader, "2015-10-12", "2016-04-03",
+ false, false, null, null));
+ assertEquals(Relation.INTERSECTS, ft.isFieldWithinQuery(reader, "2015-10-12", "2016-04-03",
+ false, true, null, null));
+ assertEquals(Relation.INTERSECTS, ft.isFieldWithinQuery(reader, "2015-10-12", "2016-04-03",
+ true, false, null, null));
+ }
+
+ public void testIsFieldWithinQuery() throws IOException {
+ Directory dir = newDirectory();
+ IndexWriter w = new IndexWriter(dir, new IndexWriterConfig(null));
+ long instant1 = DateFieldMapper.Defaults.DATE_TIME_FORMATTER.parser().parseDateTime("2015-10-12").getMillis();
+ long instant2 = DateFieldMapper.Defaults.DATE_TIME_FORMATTER.parser().parseDateTime("2016-04-03").getMillis();
+ Document doc = new Document();
+ LegacyLongField field = new LegacyLongField("my_date", instant1, Store.NO);
+ doc.add(field);
+ w.addDocument(doc);
+ field.setLongValue(instant2);
+ w.addDocument(doc);
+ DirectoryReader reader = DirectoryReader.open(w);
+ DateFieldType ft = new DateFieldType();
+ ft.setName("my_date");
+ DateMathParser alternateFormat = new DateMathParser(DateFieldMapper.Defaults.DATE_TIME_FORMATTER);
+ doTestIsFieldWithinQuery(ft, reader, null, null);
+ doTestIsFieldWithinQuery(ft, reader, null, alternateFormat);
+ doTestIsFieldWithinQuery(ft, reader, DateTimeZone.UTC, null);
+ doTestIsFieldWithinQuery(ft, reader, DateTimeZone.UTC, alternateFormat);
+ IOUtils.close(reader, w, dir);
+ }
}
diff --git a/core/src/test/java/org/elasticsearch/index/mapper/core/DoubleFieldTypeTests.java b/core/src/test/java/org/elasticsearch/index/mapper/core/DoubleFieldTypeTests.java
index 5f34e746ec..1c8cd4fda3 100644
--- a/core/src/test/java/org/elasticsearch/index/mapper/core/DoubleFieldTypeTests.java
+++ b/core/src/test/java/org/elasticsearch/index/mapper/core/DoubleFieldTypeTests.java
@@ -20,8 +20,12 @@ package org.elasticsearch.index.mapper.core;
import org.elasticsearch.index.mapper.FieldTypeTestCase;
import org.elasticsearch.index.mapper.MappedFieldType;
+import org.elasticsearch.index.mapper.MappedFieldType.Relation;
+import org.elasticsearch.index.mapper.core.DoubleFieldMapper.DoubleFieldType;
import org.junit.Before;
+import java.io.IOException;
+
public class DoubleFieldTypeTests extends FieldTypeTestCase {
@Override
protected MappedFieldType createDefaultFieldType() {
@@ -32,4 +36,11 @@ public class DoubleFieldTypeTests extends FieldTypeTestCase {
public void setupProperties() {
setDummyNullValue(10.0D);
}
+
+ public void testIsFieldWithinQuery() throws IOException {
+ DoubleFieldType ft = new DoubleFieldType();
+ // current impl ignores args and shourd always return INTERSECTS
+ assertEquals(Relation.INTERSECTS, ft.isFieldWithinQuery(null, randomDouble(), randomDouble(),
+ randomBoolean(), randomBoolean(), null, null));
+ }
}
diff --git a/core/src/test/java/org/elasticsearch/index/mapper/core/FloatFieldTypeTests.java b/core/src/test/java/org/elasticsearch/index/mapper/core/FloatFieldTypeTests.java
index 73d593ac2f..b9c222bc40 100644
--- a/core/src/test/java/org/elasticsearch/index/mapper/core/FloatFieldTypeTests.java
+++ b/core/src/test/java/org/elasticsearch/index/mapper/core/FloatFieldTypeTests.java
@@ -20,8 +20,12 @@ package org.elasticsearch.index.mapper.core;
import org.elasticsearch.index.mapper.FieldTypeTestCase;
import org.elasticsearch.index.mapper.MappedFieldType;
+import org.elasticsearch.index.mapper.MappedFieldType.Relation;
+import org.elasticsearch.index.mapper.core.FloatFieldMapper.FloatFieldType;
import org.junit.Before;
+import java.io.IOException;
+
public class FloatFieldTypeTests extends FieldTypeTestCase {
@Override
protected MappedFieldType createDefaultFieldType() {
@@ -32,4 +36,11 @@ public class FloatFieldTypeTests extends FieldTypeTestCase {
public void setupProperties() {
setDummyNullValue(10.0);
}
+
+ public void testIsFieldWithinQuery() throws IOException {
+ FloatFieldType ft = new FloatFieldType();
+ // current impl ignores args and shourd always return INTERSECTS
+ assertEquals(Relation.INTERSECTS, ft.isFieldWithinQuery(null, randomFloat(), randomFloat(),
+ randomBoolean(), randomBoolean(), null, null));
+ }
}
diff --git a/core/src/test/java/org/elasticsearch/index/mapper/core/IntegerFieldTypeTests.java b/core/src/test/java/org/elasticsearch/index/mapper/core/IntegerFieldTypeTests.java
index b8c40af72c..47f8344513 100644
--- a/core/src/test/java/org/elasticsearch/index/mapper/core/IntegerFieldTypeTests.java
+++ b/core/src/test/java/org/elasticsearch/index/mapper/core/IntegerFieldTypeTests.java
@@ -20,8 +20,12 @@ package org.elasticsearch.index.mapper.core;
import org.elasticsearch.index.mapper.FieldTypeTestCase;
import org.elasticsearch.index.mapper.MappedFieldType;
+import org.elasticsearch.index.mapper.MappedFieldType.Relation;
+import org.elasticsearch.index.mapper.core.IntegerFieldMapper.IntegerFieldType;
import org.junit.Before;
+import java.io.IOException;
+
public class IntegerFieldTypeTests extends FieldTypeTestCase {
@Override
protected MappedFieldType createDefaultFieldType() {
@@ -32,4 +36,11 @@ public class IntegerFieldTypeTests extends FieldTypeTestCase {
public void setupProperties() {
setDummyNullValue(10);
}
+
+ public void testIsFieldWithinQuery() throws IOException {
+ IntegerFieldType ft = new IntegerFieldType();
+ // current impl ignores args and shourd always return INTERSECTS
+ assertEquals(Relation.INTERSECTS, ft.isFieldWithinQuery(null, randomInt(), randomInt(),
+ randomBoolean(), randomBoolean(), null, null));
+ }
}
diff --git a/core/src/test/java/org/elasticsearch/index/mapper/core/KeywordFieldTypeTests.java b/core/src/test/java/org/elasticsearch/index/mapper/core/KeywordFieldTypeTests.java
index 699717b589..0d8ab6b804 100644
--- a/core/src/test/java/org/elasticsearch/index/mapper/core/KeywordFieldTypeTests.java
+++ b/core/src/test/java/org/elasticsearch/index/mapper/core/KeywordFieldTypeTests.java
@@ -18,12 +18,27 @@
*/
package org.elasticsearch.index.mapper.core;
+import com.carrotsearch.randomizedtesting.generators.RandomStrings;
+
import org.elasticsearch.index.mapper.FieldTypeTestCase;
import org.elasticsearch.index.mapper.MappedFieldType;
+import org.elasticsearch.index.mapper.MappedFieldType.Relation;
+import org.elasticsearch.index.mapper.core.KeywordFieldMapper.KeywordFieldType;
+
+import java.io.IOException;
public class KeywordFieldTypeTests extends FieldTypeTestCase {
@Override
protected MappedFieldType createDefaultFieldType() {
return new KeywordFieldMapper.KeywordFieldType();
}
+
+ public void testIsFieldWithinQuery() throws IOException {
+ KeywordFieldType ft = new KeywordFieldType();
+ // current impl ignores args and shourd always return INTERSECTS
+ assertEquals(Relation.INTERSECTS, ft.isFieldWithinQuery(null,
+ RandomStrings.randomAsciiOfLengthBetween(random(), 0, 5),
+ RandomStrings.randomAsciiOfLengthBetween(random(), 0, 5),
+ randomBoolean(), randomBoolean(), null, null));
+ }
}
diff --git a/core/src/test/java/org/elasticsearch/index/mapper/core/LongFieldTypeTests.java b/core/src/test/java/org/elasticsearch/index/mapper/core/LongFieldTypeTests.java
index e7b41bf21d..0b4b374a48 100644
--- a/core/src/test/java/org/elasticsearch/index/mapper/core/LongFieldTypeTests.java
+++ b/core/src/test/java/org/elasticsearch/index/mapper/core/LongFieldTypeTests.java
@@ -20,8 +20,12 @@ package org.elasticsearch.index.mapper.core;
import org.elasticsearch.index.mapper.FieldTypeTestCase;
import org.elasticsearch.index.mapper.MappedFieldType;
+import org.elasticsearch.index.mapper.MappedFieldType.Relation;
+import org.elasticsearch.index.mapper.core.LongFieldMapper.LongFieldType;
import org.junit.Before;
+import java.io.IOException;
+
public class LongFieldTypeTests extends FieldTypeTestCase {
@Override
protected MappedFieldType createDefaultFieldType() {
@@ -32,4 +36,11 @@ public class LongFieldTypeTests extends FieldTypeTestCase {
public void setupProperties() {
setDummyNullValue((long)10);
}
+
+ public void testIsFieldWithinQuery() throws IOException {
+ LongFieldType ft = new LongFieldType();
+ // current impl ignores args and shourd always return INTERSECTS
+ assertEquals(Relation.INTERSECTS, ft.isFieldWithinQuery(null, randomLong(), randomLong(),
+ randomBoolean(), randomBoolean(), null, null));
+ }
}
diff --git a/core/src/test/java/org/elasticsearch/index/percolator/PercolatorQueryCacheTests.java b/core/src/test/java/org/elasticsearch/index/percolator/PercolatorQueryCacheTests.java
index e10a63bca2..31c8a4c57d 100644
--- a/core/src/test/java/org/elasticsearch/index/percolator/PercolatorQueryCacheTests.java
+++ b/core/src/test/java/org/elasticsearch/index/percolator/PercolatorQueryCacheTests.java
@@ -117,7 +117,7 @@ public class PercolatorQueryCacheTests extends ESTestCase {
MapperService.MergeReason.MAPPING_UPDATE, false);
cache = new PercolatorQueryCache(idxSettings, () -> queryShardContext);
queryShardContext = new QueryShardContext(idxSettings, null, null, mapperService, similarityService, null,
- indicesQueriesRegistry, cache);
+ indicesQueriesRegistry, cache, null);
}
public void testLoadQueries() throws Exception {
diff --git a/core/src/test/java/org/elasticsearch/index/query/AbstractQueryTestCase.java b/core/src/test/java/org/elasticsearch/index/query/AbstractQueryTestCase.java
index e404870d72..2eec53f008 100644
--- a/core/src/test/java/org/elasticsearch/index/query/AbstractQueryTestCase.java
+++ b/core/src/test/java/org/elasticsearch/index/query/AbstractQueryTestCase.java
@@ -287,7 +287,7 @@ public abstract class AbstractQueryTestCase<QB extends AbstractQueryBuilder<QB>>
});
PercolatorQueryCache percolatorQueryCache = new PercolatorQueryCache(idxSettings, () -> queryShardContext);
indicesQueriesRegistry = injector.getInstance(IndicesQueriesRegistry.class);
- queryShardContext = new QueryShardContext(idxSettings, bitsetFilterCache, indexFieldDataService, mapperService, similarityService, scriptService, indicesQueriesRegistry, percolatorQueryCache);
+ queryShardContext = new QueryShardContext(idxSettings, bitsetFilterCache, indexFieldDataService, mapperService, similarityService, scriptService, indicesQueriesRegistry, percolatorQueryCache, null);
//create some random type with some default field, those types will stick around for all of the subclasses
currentTypes = new String[randomIntBetween(0, 5)];
for (int i = 0; i < currentTypes.length; i++) {
@@ -341,7 +341,6 @@ public abstract class AbstractQueryTestCase<QB extends AbstractQueryBuilder<QB>>
@After
public void afterTest() {
- queryShardContext.setFieldStatsProvider(null);
clientInvocationHandler.delegate = null;
SearchContext.removeCurrent();
}
diff --git a/core/src/test/java/org/elasticsearch/index/query/QueryShardContextTests.java b/core/src/test/java/org/elasticsearch/index/query/QueryShardContextTests.java
index f705db3a53..68332d755b 100644
--- a/core/src/test/java/org/elasticsearch/index/query/QueryShardContextTests.java
+++ b/core/src/test/java/org/elasticsearch/index/query/QueryShardContextTests.java
@@ -47,7 +47,7 @@ public class QueryShardContextTests extends ESTestCase {
MapperService mapperService = mock(MapperService.class);
when(mapperService.getIndexSettings()).thenReturn(indexSettings);
QueryShardContext context = new QueryShardContext(
- indexSettings, null, null, mapperService, null, null, null, null
+ indexSettings, null, null, mapperService, null, null, null, null, null
);
context.setAllowUnmappedFields(false);
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 eb37353999..c2102ebb44 100644
--- a/core/src/test/java/org/elasticsearch/index/query/RangeQueryBuilderTests.java
+++ b/core/src/test/java/org/elasticsearch/index/query/RangeQueryBuilderTests.java
@@ -22,13 +22,11 @@ package org.elasticsearch.index.query;
import org.apache.lucene.search.LegacyNumericRangeQuery;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.TermRangeQuery;
-import org.apache.lucene.util.BytesRef;
import org.elasticsearch.ElasticsearchParseException;
-import org.elasticsearch.action.fieldstats.FieldStats;
import org.elasticsearch.common.ParseFieldMatcher;
-import org.elasticsearch.common.joda.DateMathParser;
import org.elasticsearch.common.lucene.BytesRefs;
-import org.elasticsearch.index.fieldstats.FieldStatsProvider;
+import org.elasticsearch.index.mapper.MappedFieldType;
+import org.elasticsearch.index.mapper.MappedFieldType.Relation;
import org.joda.time.DateTime;
import org.joda.time.DateTimeZone;
import org.joda.time.chrono.ISOChronology;
@@ -399,317 +397,13 @@ public class RangeQueryBuilderTests extends AbstractQueryTestCase<RangeQueryBuil
}
}
- public void testRewriteLongToMatchAll() throws IOException {
- String fieldName = randomAsciiOfLengthBetween(1, 20);
- RangeQueryBuilder query = new RangeQueryBuilder(fieldName);
- int queryFromValue = randomIntBetween(-1000000, 1000000);
- int queryToValue = randomIntBetween(queryFromValue, 2000000);
- long shardMinValue = randomIntBetween(queryFromValue, queryToValue);
- long shardMaxValue = randomIntBetween((int) shardMinValue, queryToValue);
- query.from((long) queryFromValue);
- query.to((long) queryToValue);
- QueryShardContext queryShardContext = queryShardContext();
- FieldStatsProvider fieldStatsProvider = new FieldStatsProvider(null, null) {
-
- @Override
- public Relation isFieldWithinQuery(String fieldName, Object from, Object to, boolean includeLower, boolean includeUpper,
- DateTimeZone timeZone, DateMathParser dateMathParser) throws IOException {
- return Relation.WITHIN;
- }
-
- @SuppressWarnings("unchecked")
- @Override
- public <T extends Comparable<T>> FieldStats<T> get(String field) throws IOException {
- assertThat(field, equalTo(fieldName));
- return (FieldStats<T>) new FieldStats.Long(randomLong(), randomLong(), randomLong(), randomLong(), shardMinValue,
- shardMaxValue);
- }
- };
- queryShardContext.setFieldStatsProvider(fieldStatsProvider);
- QueryBuilder<?> rewritten = query.rewrite(queryShardContext);
- assertThat(rewritten, instanceOf(RangeQueryBuilder.class));
- RangeQueryBuilder rewrittenRange = (RangeQueryBuilder) rewritten;
- assertThat(rewrittenRange.fieldName(), equalTo(fieldName));
- assertThat(rewrittenRange.from(), equalTo(null));
- assertThat(rewrittenRange.to(), equalTo(null));
- }
-
- public void testRewriteLongToMatchNone() throws IOException {
- String fieldName = randomAsciiOfLengthBetween(1, 20);
- RangeQueryBuilder query = new RangeQueryBuilder(fieldName);
- int queryFromValue = randomIntBetween(-1000000, 1000000);
- int queryToValue = randomIntBetween(queryFromValue, 2000000);
- query.from((long) queryFromValue);
- query.to((long) queryToValue);
- QueryShardContext queryShardContext = queryShardContext();
- FieldStatsProvider fieldStatsProvider = new FieldStatsProvider(null, null) {
-
- @Override
- public Relation isFieldWithinQuery(String fieldName, Object from, Object to, boolean includeLower, boolean includeUpper,
- DateTimeZone timeZone, DateMathParser dateMathParser) throws IOException {
- return Relation.DISJOINT;
- }
- };
- queryShardContext.setFieldStatsProvider(fieldStatsProvider);
- QueryBuilder<?> rewritten = query.rewrite(queryShardContext);
- assertThat(rewritten, instanceOf(MatchNoneQueryBuilder.class));
- }
-
- public void testRewriteLongToSame() throws IOException {
- String fieldName = randomAsciiOfLengthBetween(1, 20);
- RangeQueryBuilder query = new RangeQueryBuilder(fieldName);
- int queryFromValue = randomIntBetween(-1000000, 1000000);
- int queryToValue = randomIntBetween(queryFromValue, 2000000);
- query.from((long) queryFromValue);
- query.to((long) queryToValue);
- QueryShardContext queryShardContext = queryShardContext();
- FieldStatsProvider fieldStatsProvider = new FieldStatsProvider(null, null) {
-
- @Override
- public Relation isFieldWithinQuery(String fieldName, Object from, Object to, boolean includeLower, boolean includeUpper,
- DateTimeZone timeZone, DateMathParser dateMathParser) throws IOException {
- return Relation.INTERSECTS;
- }
- };
- queryShardContext.setFieldStatsProvider(fieldStatsProvider);
- QueryBuilder<?> rewritten = query.rewrite(queryShardContext);
- assertThat(rewritten, sameInstance(query));
- }
-
- public void testRewriteDoubleToMatchAll() throws IOException {
- String fieldName = randomAsciiOfLengthBetween(1, 20);
- RangeQueryBuilder query = new RangeQueryBuilder(fieldName);
- double queryFromValue = randomDoubleBetween(-1000000.0, 1000000.0, true);
- double queryToValue = randomDoubleBetween(queryFromValue, 2000000, true);
- double shardMinValue = randomDoubleBetween(queryFromValue, queryToValue, true);
- double shardMaxValue = randomDoubleBetween(shardMinValue, queryToValue, true);
- query.from(queryFromValue);
- query.to(queryToValue);
- QueryShardContext queryShardContext = queryShardContext();
- FieldStatsProvider fieldStatsProvider = new FieldStatsProvider(null, null) {
-
- @Override
- public Relation isFieldWithinQuery(String fieldName, Object from, Object to, boolean includeLower, boolean includeUpper,
- DateTimeZone timeZone, DateMathParser dateMathParser) throws IOException {
- return Relation.WITHIN;
- }
-
- @SuppressWarnings("unchecked")
- @Override
- public <T extends Comparable<T>> FieldStats<T> get(String field) throws IOException {
- assertThat(field, equalTo(fieldName));
- return (FieldStats<T>) new FieldStats.Double(randomLong(), randomLong(), randomLong(), randomLong(), shardMinValue,
- shardMaxValue);
- }
- };
- queryShardContext.setFieldStatsProvider(fieldStatsProvider);
- QueryBuilder<?> rewritten = query.rewrite(queryShardContext);
- assertThat(rewritten, instanceOf(RangeQueryBuilder.class));
- RangeQueryBuilder rewrittenRange = (RangeQueryBuilder) rewritten;
- assertThat(rewrittenRange.fieldName(), equalTo(fieldName));
- assertThat(rewrittenRange.from(), equalTo(null));
- assertThat(rewrittenRange.to(), equalTo(null));
- }
-
- public void testRewriteDoubleToMatchNone() throws IOException {
- String fieldName = randomAsciiOfLengthBetween(1, 20);
- RangeQueryBuilder query = new RangeQueryBuilder(fieldName);
- double queryFromValue = randomDoubleBetween(-1000000, 1000000, true);
- double queryToValue = randomDoubleBetween(queryFromValue, 2000000, true);
- query.from(queryFromValue);
- query.to(queryToValue);
- QueryShardContext queryShardContext = queryShardContext();
- FieldStatsProvider fieldStatsProvider = new FieldStatsProvider(null, null) {
-
- @Override
- public Relation isFieldWithinQuery(String fieldName, Object from, Object to, boolean includeLower, boolean includeUpper,
- DateTimeZone timeZone, DateMathParser dateMathParser) throws IOException {
- return Relation.DISJOINT;
- }
- };
- queryShardContext.setFieldStatsProvider(fieldStatsProvider);
- QueryBuilder<?> rewritten = query.rewrite(queryShardContext);
- assertThat(rewritten, instanceOf(MatchNoneQueryBuilder.class));
- }
-
- public void testRewriteDoubleToSame() throws IOException {
- String fieldName = randomAsciiOfLengthBetween(1, 20);
- RangeQueryBuilder query = new RangeQueryBuilder(fieldName);
- double queryFromValue = randomDoubleBetween(-1000000, 1000000, true);
- double queryToValue = randomDoubleBetween(queryFromValue, 2000000, true);
- query.from(queryFromValue);
- query.to(queryToValue);
- QueryShardContext queryShardContext = queryShardContext();
- FieldStatsProvider fieldStatsProvider = new FieldStatsProvider(null, null) {
-
- @Override
- public Relation isFieldWithinQuery(String fieldName, Object from, Object to, boolean includeLower, boolean includeUpper,
- DateTimeZone timeZone, DateMathParser dateMathParser) throws IOException {
- return Relation.INTERSECTS;
- }
- };
- queryShardContext.setFieldStatsProvider(fieldStatsProvider);
- QueryBuilder<?> rewritten = query.rewrite(queryShardContext);
- assertThat(rewritten, sameInstance(query));
- }
-
- public void testRewriteFloatToMatchAll() throws IOException {
- String fieldName = randomAsciiOfLengthBetween(1, 20);
- RangeQueryBuilder query = new RangeQueryBuilder(fieldName);
- float queryFromValue = (float) randomDoubleBetween(-1000000.0, 1000000.0, true);
- float queryToValue = (float) randomDoubleBetween(queryFromValue, 2000000, true);
- float shardMinValue = (float) randomDoubleBetween(queryFromValue, queryToValue, true);
- float shardMaxValue = (float) randomDoubleBetween(shardMinValue, queryToValue, true);
- query.from(queryFromValue);
- query.to(queryToValue);
- QueryShardContext queryShardContext = queryShardContext();
- FieldStatsProvider fieldStatsProvider = new FieldStatsProvider(null, null) {
-
- @Override
- public Relation isFieldWithinQuery(String fieldName, Object from, Object to, boolean includeLower, boolean includeUpper,
- DateTimeZone timeZone, DateMathParser dateMathParser) throws IOException {
- return Relation.WITHIN;
- }
-
- @SuppressWarnings("unchecked")
- @Override
- public <T extends Comparable<T>> FieldStats<T> get(String field) throws IOException {
- assertThat(field, equalTo(fieldName));
- return (FieldStats<T>) new FieldStats.Float(randomLong(), randomLong(), randomLong(), randomLong(), shardMinValue,
- shardMaxValue);
- }
- };
- queryShardContext.setFieldStatsProvider(fieldStatsProvider);
- QueryBuilder<?> rewritten = query.rewrite(queryShardContext);
- assertThat(rewritten, instanceOf(RangeQueryBuilder.class));
- RangeQueryBuilder rewrittenRange = (RangeQueryBuilder) rewritten;
- assertThat(rewrittenRange.fieldName(), equalTo(fieldName));
- assertThat(rewrittenRange.from(), equalTo(null));
- assertThat(rewrittenRange.to(), equalTo(null));
- }
-
- public void testRewriteFloatToMatchNone() throws IOException {
- String fieldName = randomAsciiOfLengthBetween(1, 20);
- RangeQueryBuilder query = new RangeQueryBuilder(fieldName);
- float queryFromValue = (float) randomDoubleBetween(-1000000, 1000000, true);
- float queryToValue = (float) randomDoubleBetween(queryFromValue, 2000000, true);
- query.from(queryFromValue);
- query.to(queryToValue);
- QueryShardContext queryShardContext = queryShardContext();
- FieldStatsProvider fieldStatsProvider = new FieldStatsProvider(null, null) {
-
- @Override
- public Relation isFieldWithinQuery(String fieldName, Object from, Object to, boolean includeLower, boolean includeUpper,
- DateTimeZone timeZone, DateMathParser dateMathParser) throws IOException {
- return Relation.DISJOINT;
- }
- };
- queryShardContext.setFieldStatsProvider(fieldStatsProvider);
- QueryBuilder<?> rewritten = query.rewrite(queryShardContext);
- assertThat(rewritten, instanceOf(MatchNoneQueryBuilder.class));
- }
-
- public void testRewriteFloatToSame() throws IOException {
- String fieldName = randomAsciiOfLengthBetween(1, 20);
- RangeQueryBuilder query = new RangeQueryBuilder(fieldName);
- float queryFromValue = (float) randomDoubleBetween(-1000000, 1000000, true);
- float queryToValue = (float) randomDoubleBetween(queryFromValue, 2000000, true);
- query.from(queryFromValue);
- query.to(queryToValue);
- QueryShardContext queryShardContext = queryShardContext();
- FieldStatsProvider fieldStatsProvider = new FieldStatsProvider(null, null) {
-
- @Override
- public Relation isFieldWithinQuery(String fieldName, Object from, Object to, boolean includeLower, boolean includeUpper,
- DateTimeZone timeZone, DateMathParser dateMathParser) throws IOException {
- return Relation.INTERSECTS;
- }
- };
- queryShardContext.setFieldStatsProvider(fieldStatsProvider);
- QueryBuilder<?> rewritten = query.rewrite(queryShardContext);
- assertThat(rewritten, sameInstance(query));
- }
-
- public void testRewriteTextToMatchAll() throws IOException {
+ public void testRewriteDateToMatchAll() throws IOException {
String fieldName = randomAsciiOfLengthBetween(1, 20);
- RangeQueryBuilder query = new RangeQueryBuilder(fieldName);
- String queryFromValue = "damson";
- String queryToValue = "plum";
- String shardMinValue = "grape";
- String shardMaxValue = "orange";
- query.from(queryFromValue);
- query.to(queryToValue);
- QueryShardContext queryShardContext = queryShardContext();
- FieldStatsProvider fieldStatsProvider = new FieldStatsProvider(null, null) {
-
- @Override
- public Relation isFieldWithinQuery(String fieldName, Object from, Object to, boolean includeLower, boolean includeUpper,
- DateTimeZone timeZone, DateMathParser dateMathParser) throws IOException {
+ RangeQueryBuilder query = new RangeQueryBuilder(fieldName) {
+ protected MappedFieldType.Relation getRelation(QueryRewriteContext queryRewriteContext) throws IOException {
return Relation.WITHIN;
}
-
- @SuppressWarnings("unchecked")
- @Override
- public <T extends Comparable<T>> FieldStats<T> get(String field) throws IOException {
- assertThat(field, equalTo(fieldName));
- return (FieldStats<T>) new FieldStats.Text(randomLong(), randomLong(), randomLong(), randomLong(),
- new BytesRef(shardMinValue), new BytesRef(shardMaxValue));
- }
};
- queryShardContext.setFieldStatsProvider(fieldStatsProvider);
- QueryBuilder<?> rewritten = query.rewrite(queryShardContext);
- assertThat(rewritten, instanceOf(RangeQueryBuilder.class));
- RangeQueryBuilder rewrittenRange = (RangeQueryBuilder) rewritten;
- assertThat(rewrittenRange.fieldName(), equalTo(fieldName));
- assertThat(rewrittenRange.from(), equalTo(null));
- assertThat(rewrittenRange.to(), equalTo(null));
- }
-
- public void testRewriteTextToMatchNone() throws IOException {
- String fieldName = randomAsciiOfLengthBetween(1, 20);
- RangeQueryBuilder query = new RangeQueryBuilder(fieldName);
- String queryFromValue = "damson";
- String queryToValue = "plum";
- query.from(queryFromValue);
- query.to(queryToValue);
- QueryShardContext queryShardContext = queryShardContext();
- FieldStatsProvider fieldStatsProvider = new FieldStatsProvider(null, null) {
-
- @Override
- public Relation isFieldWithinQuery(String fieldName, Object from, Object to, boolean includeLower, boolean includeUpper,
- DateTimeZone timeZone, DateMathParser dateMathParser) throws IOException {
- return Relation.DISJOINT;
- }
- };
- queryShardContext.setFieldStatsProvider(fieldStatsProvider);
- QueryBuilder<?> rewritten = query.rewrite(queryShardContext);
- assertThat(rewritten, instanceOf(MatchNoneQueryBuilder.class));
- }
-
- public void testRewriteTextToSame() throws IOException {
- String fieldName = randomAsciiOfLengthBetween(1, 20);
- RangeQueryBuilder query = new RangeQueryBuilder(fieldName);
- String queryFromValue = "damson";
- String queryToValue = "plum";
- query.from(queryFromValue);
- query.to(queryToValue);
- QueryShardContext queryShardContext = queryShardContext();
- FieldStatsProvider fieldStatsProvider = new FieldStatsProvider(null, null) {
-
- @Override
- public Relation isFieldWithinQuery(String fieldName, Object from, Object to, boolean includeLower, boolean includeUpper,
- DateTimeZone timeZone, DateMathParser dateMathParser) throws IOException {
- return Relation.INTERSECTS;
- }
- };
- queryShardContext.setFieldStatsProvider(fieldStatsProvider);
- QueryBuilder<?> rewritten = query.rewrite(queryShardContext);
- assertThat(rewritten, sameInstance(query));
- }
-
- public void testRewriteDateToMatchAll() throws IOException {
- String fieldName = randomAsciiOfLengthBetween(1, 20);
- RangeQueryBuilder query = new RangeQueryBuilder(fieldName);
DateTime queryFromValue = new DateTime(2015, 1, 1, 0, 0, 0, ISOChronology.getInstanceUTC());
DateTime queryToValue = new DateTime(2016, 1, 1, 0, 0, 0, ISOChronology.getInstanceUTC());
DateTime shardMinValue = new DateTime(2015, 3, 1, 0, 0, 0, ISOChronology.getInstanceUTC());
@@ -717,23 +411,6 @@ public class RangeQueryBuilderTests extends AbstractQueryTestCase<RangeQueryBuil
query.from(queryFromValue);
query.to(queryToValue);
QueryShardContext queryShardContext = queryShardContext();
- FieldStatsProvider fieldStatsProvider = new FieldStatsProvider(null, null) {
-
- @Override
- public Relation isFieldWithinQuery(String fieldName, Object from, Object to, boolean includeLower, boolean includeUpper,
- DateTimeZone timeZone, DateMathParser dateMathParser) throws IOException {
- return Relation.WITHIN;
- }
-
- @SuppressWarnings("unchecked")
- @Override
- public <T extends Comparable<T>> FieldStats<T> get(String field) throws IOException {
- assertThat(field, equalTo(fieldName));
- return (FieldStats<T>) new FieldStats.Date(randomLong(), randomLong(), randomLong(), randomLong(),
- shardMinValue.getMillis(), shardMaxValue.getMillis(), null);
- }
- };
- queryShardContext.setFieldStatsProvider(fieldStatsProvider);
QueryBuilder<?> rewritten = query.rewrite(queryShardContext);
assertThat(rewritten, instanceOf(RangeQueryBuilder.class));
RangeQueryBuilder rewrittenRange = (RangeQueryBuilder) rewritten;
@@ -742,121 +419,46 @@ public class RangeQueryBuilderTests extends AbstractQueryTestCase<RangeQueryBuil
assertThat(rewrittenRange.to(), equalTo(null));
}
- public void testRewriteDateWithNowToMatchAll() throws IOException {
+ public void testRewriteDateToMatchNone() throws IOException {
String fieldName = randomAsciiOfLengthBetween(1, 20);
- RangeQueryBuilder query = new RangeQueryBuilder(fieldName);
- String queryFromValue = "now-2d";
- String queryToValue = "now";
- DateTime shardMinValue = new DateTime().minusHours(12);
- DateTime shardMaxValue = new DateTime().minusHours(24);
- query.from(queryFromValue);
- query.to(queryToValue);
- QueryShardContext queryShardContext = queryShardContext();
- FieldStatsProvider fieldStatsProvider = new FieldStatsProvider(null, null) {
-
- @Override
- public Relation isFieldWithinQuery(String fieldName, Object from, Object to, boolean includeLower, boolean includeUpper,
- DateTimeZone timeZone, DateMathParser dateMathParser) throws IOException {
- return Relation.WITHIN;
- }
-
- @SuppressWarnings("unchecked")
- @Override
- public <T extends Comparable<T>> FieldStats<T> get(String field) throws IOException {
- assertThat(field, equalTo(fieldName));
- return (FieldStats<T>) new FieldStats.Date(randomLong(), randomLong(), randomLong(), randomLong(),
- shardMinValue.getMillis(), shardMaxValue.getMillis(), null);
+ RangeQueryBuilder query = new RangeQueryBuilder(fieldName) {
+ protected MappedFieldType.Relation getRelation(QueryRewriteContext queryRewriteContext) throws IOException {
+ return Relation.DISJOINT;
}
};
- queryShardContext.setFieldStatsProvider(fieldStatsProvider);
- QueryBuilder<?> rewritten = query.rewrite(queryShardContext);
- assertThat(rewritten, instanceOf(RangeQueryBuilder.class));
- RangeQueryBuilder rewrittenRange = (RangeQueryBuilder) rewritten;
- assertThat(rewrittenRange.fieldName(), equalTo(fieldName));
- assertThat(rewrittenRange.from(), equalTo(null));
- assertThat(rewrittenRange.to(), equalTo(null));
- }
-
- public void testRewriteDateToMatchNone() throws IOException {
- String fieldName = randomAsciiOfLengthBetween(1, 20);
- RangeQueryBuilder query = new RangeQueryBuilder(fieldName);
DateTime queryFromValue = new DateTime(2015, 1, 1, 0, 0, 0, ISOChronology.getInstanceUTC());
DateTime queryToValue = new DateTime(2016, 1, 1, 0, 0, 0, ISOChronology.getInstanceUTC());
query.from(queryFromValue);
query.to(queryToValue);
QueryShardContext queryShardContext = queryShardContext();
- FieldStatsProvider fieldStatsProvider = new FieldStatsProvider(null, null) {
-
- @Override
- public Relation isFieldWithinQuery(String fieldName, Object from, Object to, boolean includeLower, boolean includeUpper,
- DateTimeZone timeZone, DateMathParser dateMathParser) throws IOException {
- return Relation.DISJOINT;
- }
- };
- queryShardContext.setFieldStatsProvider(fieldStatsProvider);
QueryBuilder<?> rewritten = query.rewrite(queryShardContext);
assertThat(rewritten, instanceOf(MatchNoneQueryBuilder.class));
}
- public void testRewriteDateWithNowToMatchNone() throws IOException {
+ public void testRewriteDateToSame() throws IOException {
String fieldName = randomAsciiOfLengthBetween(1, 20);
- RangeQueryBuilder query = new RangeQueryBuilder(fieldName);
- String queryFromValue = "now-2d";
- String queryToValue = "now";
- query.from(queryFromValue);
- query.to(queryToValue);
- QueryShardContext queryShardContext = queryShardContext();
- FieldStatsProvider fieldStatsProvider = new FieldStatsProvider(null, null) {
-
- @Override
- public Relation isFieldWithinQuery(String fieldName, Object from, Object to, boolean includeLower, boolean includeUpper,
- DateTimeZone timeZone, DateMathParser dateMathParser) throws IOException {
- return Relation.DISJOINT;
+ RangeQueryBuilder query = new RangeQueryBuilder(fieldName) {
+ protected MappedFieldType.Relation getRelation(QueryRewriteContext queryRewriteContext) throws IOException {
+ return Relation.INTERSECTS;
}
};
- queryShardContext.setFieldStatsProvider(fieldStatsProvider);
- QueryBuilder<?> rewritten = query.rewrite(queryShardContext);
- assertThat(rewritten, instanceOf(MatchNoneQueryBuilder.class));
- }
-
- public void testRewriteDateToSame() throws IOException {
- String fieldName = randomAsciiOfLengthBetween(1, 20);
- RangeQueryBuilder query = new RangeQueryBuilder(fieldName);
DateTime queryFromValue = new DateTime(2015, 1, 1, 0, 0, 0, ISOChronology.getInstanceUTC());
DateTime queryToValue = new DateTime(2016, 1, 1, 0, 0, 0, ISOChronology.getInstanceUTC());
query.from(queryFromValue);
query.to(queryToValue);
QueryShardContext queryShardContext = queryShardContext();
- FieldStatsProvider fieldStatsProvider = new FieldStatsProvider(null, null) {
-
- @Override
- public Relation isFieldWithinQuery(String fieldName, Object from, Object to, boolean includeLower, boolean includeUpper,
- DateTimeZone timeZone, DateMathParser dateMathParser) throws IOException {
- return Relation.INTERSECTS;
- }
- };
- queryShardContext.setFieldStatsProvider(fieldStatsProvider);
QueryBuilder<?> rewritten = query.rewrite(queryShardContext);
assertThat(rewritten, sameInstance(query));
}
- public void testRewriteDateWithNowToSame() throws IOException {
+ public void testRewriteOpenBoundsToSame() throws IOException {
String fieldName = randomAsciiOfLengthBetween(1, 20);
- RangeQueryBuilder query = new RangeQueryBuilder(fieldName);
- String queryFromValue = "now-2d";
- String queryToValue = "now";
- query.from(queryFromValue);
- query.to(queryToValue);
- QueryShardContext queryShardContext = queryShardContext();
- FieldStatsProvider fieldStatsProvider = new FieldStatsProvider(null, null) {
-
- @Override
- public Relation isFieldWithinQuery(String fieldName, Object from, Object to, boolean includeLower, boolean includeUpper,
- DateTimeZone timeZone, DateMathParser dateMathParser) throws IOException {
+ RangeQueryBuilder query = new RangeQueryBuilder(fieldName) {
+ protected MappedFieldType.Relation getRelation(QueryRewriteContext queryRewriteContext) throws IOException {
return Relation.INTERSECTS;
}
};
- queryShardContext.setFieldStatsProvider(fieldStatsProvider);
+ QueryShardContext queryShardContext = queryShardContext();
QueryBuilder<?> rewritten = query.rewrite(queryShardContext);
assertThat(rewritten, sameInstance(query));
}
diff --git a/core/src/test/java/org/elasticsearch/index/query/RangeQueryRewriteTests.java b/core/src/test/java/org/elasticsearch/index/query/RangeQueryRewriteTests.java
new file mode 100644
index 0000000000..71d70e2861
--- /dev/null
+++ b/core/src/test/java/org/elasticsearch/index/query/RangeQueryRewriteTests.java
@@ -0,0 +1,81 @@
+/*
+ * Licensed to Elasticsearch under one or more contributor
+ * license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright
+ * ownership. Elasticsearch licenses this file to you under
+ * the Apache License, Version 2.0 (the "License"); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.elasticsearch.index.query;
+
+import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.MultiReader;
+import org.elasticsearch.common.compress.CompressedXContent;
+import org.elasticsearch.common.xcontent.XContentFactory;
+import org.elasticsearch.index.IndexService;
+import org.elasticsearch.index.mapper.MappedFieldType.Relation;
+import org.elasticsearch.index.mapper.MapperService.MergeReason;
+import org.elasticsearch.test.ESSingleNodeTestCase;
+
+// The purpose of this test case is to test RangeQueryBuilder.getRelation()
+// Whether it should return INTERSECT/DISJOINT/WITHIN is already tested in
+// RangeQueryBuilderTests
+public class RangeQueryRewriteTests extends ESSingleNodeTestCase {
+
+ public void testRewriteMissingField() throws Exception {
+ IndexService indexService = createIndex("test");
+ IndexReader reader = new MultiReader();
+ QueryRewriteContext context = new QueryRewriteContext(indexService.getIndexSettings(),
+ indexService.mapperService(), null, null, reader);
+ RangeQueryBuilder range = new RangeQueryBuilder("foo");
+ assertEquals(Relation.DISJOINT, range.getRelation(context));
+ }
+
+ public void testRewriteMissingReader() throws Exception {
+ IndexService indexService = createIndex("test");
+ String mapping = XContentFactory.jsonBuilder().startObject().startObject("type")
+ .startObject("properties")
+ .startObject("foo")
+ .field("type", "date")
+ .endObject()
+ .endObject()
+ .endObject().endObject().string();
+ indexService.mapperService().merge("type",
+ new CompressedXContent(mapping), MergeReason.MAPPING_UPDATE, false);
+ QueryRewriteContext context = new QueryRewriteContext(indexService.getIndexSettings(),
+ indexService.mapperService(), null, null, null);
+ RangeQueryBuilder range = new RangeQueryBuilder("foo");
+ // can't make assumptions on a missing reader, so it must return INTERSECT
+ assertEquals(Relation.INTERSECTS, range.getRelation(context));
+ }
+
+ public void testRewriteEmptyReader() throws Exception {
+ IndexService indexService = createIndex("test");
+ String mapping = XContentFactory.jsonBuilder().startObject().startObject("type")
+ .startObject("properties")
+ .startObject("foo")
+ .field("type", "date")
+ .endObject()
+ .endObject()
+ .endObject().endObject().string();
+ indexService.mapperService().merge("type",
+ new CompressedXContent(mapping), MergeReason.MAPPING_UPDATE, false);
+ IndexReader reader = new MultiReader();
+ QueryRewriteContext context = new QueryRewriteContext(indexService.getIndexSettings(),
+ indexService.mapperService(), null, null, reader);
+ RangeQueryBuilder range = new RangeQueryBuilder("foo");
+ // no values -> DISJOINT
+ assertEquals(Relation.DISJOINT, range.getRelation(context));
+ }
+}
diff --git a/core/src/test/java/org/elasticsearch/indices/IndicesRequestCacheIT.java b/core/src/test/java/org/elasticsearch/indices/IndicesRequestCacheIT.java
index fec50cf0a2..fdd7e4c2d6 100644
--- a/core/src/test/java/org/elasticsearch/indices/IndicesRequestCacheIT.java
+++ b/core/src/test/java/org/elasticsearch/indices/IndicesRequestCacheIT.java
@@ -85,20 +85,20 @@ public class IndicesRequestCacheIT extends ESIntegTestCase {
}
public void testQueryRewrite() throws Exception {
- assertAcked(client().admin().indices().prepareCreate("index").addMapping("type", "s", "type=text")
+ assertAcked(client().admin().indices().prepareCreate("index").addMapping("type", "s", "type=date")
.setSettings(IndicesRequestCache.INDEX_CACHE_REQUEST_ENABLED_SETTING.getKey(), true,
IndexMetaData.SETTING_NUMBER_OF_SHARDS, 5,
IndexMetaData.SETTING_NUMBER_OF_REPLICAS, 0)
.get());
- indexRandom(true, client().prepareIndex("index", "type", "1").setRouting("1").setSource("s", "a"),
- client().prepareIndex("index", "type", "2").setRouting("1").setSource("s", "b"),
- client().prepareIndex("index", "type", "3").setRouting("1").setSource("s", "c"),
- client().prepareIndex("index", "type", "4").setRouting("2").setSource("s", "d"),
- client().prepareIndex("index", "type", "5").setRouting("2").setSource("s", "e"),
- client().prepareIndex("index", "type", "6").setRouting("2").setSource("s", "f"),
- client().prepareIndex("index", "type", "7").setRouting("3").setSource("s", "g"),
- client().prepareIndex("index", "type", "8").setRouting("3").setSource("s", "h"),
- client().prepareIndex("index", "type", "9").setRouting("3").setSource("s", "i"));
+ indexRandom(true, client().prepareIndex("index", "type", "1").setRouting("1").setSource("s", "2016-03-19"),
+ client().prepareIndex("index", "type", "2").setRouting("1").setSource("s", "2016-03-20"),
+ client().prepareIndex("index", "type", "3").setRouting("1").setSource("s", "2016-03-21"),
+ client().prepareIndex("index", "type", "4").setRouting("2").setSource("s", "2016-03-22"),
+ client().prepareIndex("index", "type", "5").setRouting("2").setSource("s", "2016-03-23"),
+ client().prepareIndex("index", "type", "6").setRouting("2").setSource("s", "2016-03-24"),
+ client().prepareIndex("index", "type", "7").setRouting("3").setSource("s", "2016-03-25"),
+ client().prepareIndex("index", "type", "8").setRouting("3").setSource("s", "2016-03-26"),
+ client().prepareIndex("index", "type", "9").setRouting("3").setSource("s", "2016-03-27"));
ensureSearchable("index");
assertThat(client().admin().indices().prepareStats("index").setRequestCache(true).get().getTotal().getRequestCache().getHitCount(),
@@ -107,7 +107,7 @@ public class IndicesRequestCacheIT extends ESIntegTestCase {
equalTo(0L));
final SearchResponse r1 = client().prepareSearch("index").setSearchType(SearchType.QUERY_THEN_FETCH).setSize(0)
- .setQuery(QueryBuilders.rangeQuery("s").gte("a").lte("g")).get();
+ .setQuery(QueryBuilders.rangeQuery("s").gte("2016-03-19").lte("2016-03-25")).get();
assertSearchResponse(r1);
assertThat(r1.getHits().getTotalHits(), equalTo(7L));
assertThat(client().admin().indices().prepareStats("index").setRequestCache(true).get().getTotal().getRequestCache().getHitCount(),
@@ -116,7 +116,7 @@ public class IndicesRequestCacheIT extends ESIntegTestCase {
equalTo(5L));
final SearchResponse r2 = client().prepareSearch("index").setSearchType(SearchType.QUERY_THEN_FETCH).setSize(0)
- .setQuery(QueryBuilders.rangeQuery("s").gte("b").lte("h")).get();
+ .setQuery(QueryBuilders.rangeQuery("s").gte("2016-03-20").lte("2016-03-26")).get();
assertSearchResponse(r2);
assertThat(r2.getHits().getTotalHits(), equalTo(7L));
assertThat(client().admin().indices().prepareStats("index").setRequestCache(true).get().getTotal().getRequestCache().getHitCount(),
@@ -125,7 +125,7 @@ public class IndicesRequestCacheIT extends ESIntegTestCase {
equalTo(7L));
final SearchResponse r3 = client().prepareSearch("index").setSearchType(SearchType.QUERY_THEN_FETCH).setSize(0)
- .setQuery(QueryBuilders.rangeQuery("s").gte("c").lte("i")).get();
+ .setQuery(QueryBuilders.rangeQuery("s").gte("2016-03-21").lte("2016-03-27")).get();
assertSearchResponse(r3);
assertThat(r3.getHits().getTotalHits(), equalTo(7L));
assertThat(client().admin().indices().prepareStats("index").setRequestCache(true).get().getTotal().getRequestCache().getHitCount(),
@@ -135,19 +135,19 @@ public class IndicesRequestCacheIT extends ESIntegTestCase {
}
public void testQueryRewriteMissingValues() throws Exception {
- assertAcked(client().admin().indices().prepareCreate("index").addMapping("type", "s", "type=text")
+ assertAcked(client().admin().indices().prepareCreate("index").addMapping("type", "s", "type=date")
.setSettings(IndicesRequestCache.INDEX_CACHE_REQUEST_ENABLED_SETTING.getKey(), true, IndexMetaData.SETTING_NUMBER_OF_SHARDS,
1, IndexMetaData.SETTING_NUMBER_OF_REPLICAS, 0)
.get());
- indexRandom(true, client().prepareIndex("index", "type", "1").setSource("s", "a"),
- client().prepareIndex("index", "type", "2").setSource("s", "b"),
- client().prepareIndex("index", "type", "3").setSource("s", "c"),
- client().prepareIndex("index", "type", "4").setSource("s", "d"),
- client().prepareIndex("index", "type", "5").setSource("s", "e"),
- client().prepareIndex("index", "type", "6").setSource("s", "f"),
+ indexRandom(true, client().prepareIndex("index", "type", "1").setSource("s", "2016-03-19"),
+ client().prepareIndex("index", "type", "2").setSource("s", "2016-03-20"),
+ client().prepareIndex("index", "type", "3").setSource("s", "2016-03-21"),
+ client().prepareIndex("index", "type", "4").setSource("s", "2016-03-22"),
+ client().prepareIndex("index", "type", "5").setSource("s", "2016-03-23"),
+ client().prepareIndex("index", "type", "6").setSource("s", "2016-03-24"),
client().prepareIndex("index", "type", "7").setSource("other", "value"),
- client().prepareIndex("index", "type", "8").setSource("s", "h"),
- client().prepareIndex("index", "type", "9").setSource("s", "i"));
+ client().prepareIndex("index", "type", "8").setSource("s", "2016-03-26"),
+ client().prepareIndex("index", "type", "9").setSource("s", "2016-03-27"));
ensureSearchable("index");
assertThat(client().admin().indices().prepareStats("index").setRequestCache(true).get().getTotal().getRequestCache().getHitCount(),
@@ -156,7 +156,7 @@ public class IndicesRequestCacheIT extends ESIntegTestCase {
equalTo(0L));
final SearchResponse r1 = client().prepareSearch("index").setSearchType(SearchType.QUERY_THEN_FETCH).setSize(0)
- .setQuery(QueryBuilders.rangeQuery("s").gte("a").lte("j")).get();
+ .setQuery(QueryBuilders.rangeQuery("s").gte("2016-03-19").lte("2016-03-28")).get();
assertSearchResponse(r1);
assertThat(r1.getHits().getTotalHits(), equalTo(8L));
assertThat(client().admin().indices().prepareStats("index").setRequestCache(true).get().getTotal().getRequestCache().getHitCount(),
@@ -165,7 +165,7 @@ public class IndicesRequestCacheIT extends ESIntegTestCase {
equalTo(1L));
final SearchResponse r2 = client().prepareSearch("index").setSearchType(SearchType.QUERY_THEN_FETCH).setSize(0)
- .setQuery(QueryBuilders.rangeQuery("s").gte("a").lte("j")).get();
+ .setQuery(QueryBuilders.rangeQuery("s").gte("2016-03-19").lte("2016-03-28")).get();
assertSearchResponse(r2);
assertThat(r2.getHits().getTotalHits(), equalTo(8L));
assertThat(client().admin().indices().prepareStats("index").setRequestCache(true).get().getTotal().getRequestCache().getHitCount(),
@@ -174,7 +174,7 @@ public class IndicesRequestCacheIT extends ESIntegTestCase {
equalTo(1L));
final SearchResponse r3 = client().prepareSearch("index").setSearchType(SearchType.QUERY_THEN_FETCH).setSize(0)
- .setQuery(QueryBuilders.rangeQuery("s").gte("a").lte("j")).get();
+ .setQuery(QueryBuilders.rangeQuery("s").gte("2016-03-19").lte("2016-03-28")).get();
assertSearchResponse(r3);
assertThat(r3.getHits().getTotalHits(), equalTo(8L));
assertThat(client().admin().indices().prepareStats("index").setRequestCache(true).get().getTotal().getRequestCache().getHitCount(),
diff --git a/core/src/test/java/org/elasticsearch/search/highlight/HighlightBuilderTests.java b/core/src/test/java/org/elasticsearch/search/highlight/HighlightBuilderTests.java
index d885619cf1..1ea4212511 100644
--- a/core/src/test/java/org/elasticsearch/search/highlight/HighlightBuilderTests.java
+++ b/core/src/test/java/org/elasticsearch/search/highlight/HighlightBuilderTests.java
@@ -291,7 +291,7 @@ public class HighlightBuilderTests extends ESTestCase {
IndexSettings idxSettings = IndexSettingsModule.newIndexSettings(index, indexSettings);
// shard context will only need indicesQueriesRegistry for building Query objects nested in highlighter
QueryShardContext mockShardContext = new QueryShardContext(idxSettings, null, null, null, null, null, indicesQueriesRegistry,
- null) {
+ null, null) {
@Override
public MappedFieldType fieldMapper(String name) {
TextFieldMapper.Builder builder = new TextFieldMapper.Builder(name);
diff --git a/core/src/test/java/org/elasticsearch/search/rescore/QueryRescoreBuilderTests.java b/core/src/test/java/org/elasticsearch/search/rescore/QueryRescoreBuilderTests.java
index 7e4ff9449b..4418fe848a 100644
--- a/core/src/test/java/org/elasticsearch/search/rescore/QueryRescoreBuilderTests.java
+++ b/core/src/test/java/org/elasticsearch/search/rescore/QueryRescoreBuilderTests.java
@@ -163,7 +163,7 @@ public class QueryRescoreBuilderTests extends ESTestCase {
IndexSettings idxSettings = IndexSettingsModule.newIndexSettings(randomAsciiOfLengthBetween(1, 10), indexSettings);
// shard context will only need indicesQueriesRegistry for building Query objects nested in query rescorer
QueryShardContext mockShardContext = new QueryShardContext(idxSettings, null, null, null, null, null, indicesQueriesRegistry,
- null) {
+ null, null) {
@Override
public MappedFieldType fieldMapper(String name) {
TextFieldMapper.Builder builder = new TextFieldMapper.Builder(name);
diff --git a/core/src/test/java/org/elasticsearch/search/sort/AbstractSortTestCase.java b/core/src/test/java/org/elasticsearch/search/sort/AbstractSortTestCase.java
index 0112e252ac..b84ec9b436 100644
--- a/core/src/test/java/org/elasticsearch/search/sort/AbstractSortTestCase.java
+++ b/core/src/test/java/org/elasticsearch/search/sort/AbstractSortTestCase.java
@@ -225,7 +225,7 @@ public abstract class AbstractSortTestCase<T extends SortBuilder<T>> extends EST
}
});
return new QueryShardContext(idxSettings, bitsetFilterCache, ifds, null, null, scriptService,
- indicesQueriesRegistry, null) {
+ indicesQueriesRegistry, null, null) {
@Override
public MappedFieldType fieldMapper(String name) {
return provideMappedFieldType(name);