summaryrefslogtreecommitdiff
path: root/core/src/test/java/org
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/test/java/org')
-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);