From ae0d8850235473cc7a7f4b877e1720021a8f87be Mon Sep 17 00:00:00 2001 From: Adrien Grand Date: Thu, 7 Sep 2017 14:16:01 +0200 Subject: [PATCH 1/8] Move non-core mappers to a module. Today we have all non-plugin mappers in core. I'd like to start moving those that neither map to json datatypes nor are very frequently used like `date` or `ip` to a module. This commit creates a new module called `mappers-extra` and moves the `scaled_float` and `token_count` mappers to it. I'd like to eventually move `range` fields there but it's more complicated due to their intimate relationship with range queries. Relates #10368 --- .../resources/checkstyle_suppressions.xml | 1 - .../index/search/QueryParserHelper.java | 4 +- .../elasticsearch/indices/IndicesModule.java | 4 - .../org/elasticsearch/get/GetActionIT.java | 75 ------------------- .../index/mapper/MultiFieldTests.java | 8 -- .../mapper/MultiFieldsIntegrationIT.java | 36 --------- .../index/mapper/NumberFieldTypeTests.java | 23 +++++- .../search/query/QueryStringIT.java | 6 -- .../search/query/SimpleQueryStringIT.java | 2 - .../mapper/multifield/test-multi-fields.json | 6 -- .../search/query/all-example-document.json | 1 - .../search/query/all-query-index.json | 4 +- modules/mapper-extras/build.gradle | 23 ++++++ .../index/mapper/MapperExtrasPlugin.java | 39 ++++++++++ .../index/mapper/ScaledFloatFieldMapper.java | 0 .../index/mapper/TokenCountFieldMapper.java | 0 .../mapper/ScaledFloatFieldMapperTests.java | 2 +- .../mapper/ScaledFloatFieldTypeTests.java | 0 .../TokenCountFieldMapperIntegrationIT.java | 3 +- .../mapper/TokenCountFieldMapperTests.java | 11 +-- qa/integration-bwc/build.gradle | 35 +++++++++ .../indices/template/BWCTemplateTests.java | 9 +++ .../template/filebeat-5.0.template.json | 0 .../template/metricbeat-5.0.template.json | 0 .../template/packetbeat-5.0.template.json | 0 .../template/winlogbeat-5.0.template.json | 0 settings.gradle | 2 + 27 files changed, 141 insertions(+), 153 deletions(-) create mode 100644 modules/mapper-extras/build.gradle create mode 100644 modules/mapper-extras/src/main/java/org/elasticsearch/index/mapper/MapperExtrasPlugin.java rename {core => modules/mapper-extras}/src/main/java/org/elasticsearch/index/mapper/ScaledFloatFieldMapper.java (100%) rename {core => modules/mapper-extras}/src/main/java/org/elasticsearch/index/mapper/TokenCountFieldMapper.java (100%) rename {core => modules/mapper-extras}/src/test/java/org/elasticsearch/index/mapper/ScaledFloatFieldMapperTests.java (99%) rename {core => modules/mapper-extras}/src/test/java/org/elasticsearch/index/mapper/ScaledFloatFieldTypeTests.java (100%) rename {core => modules/mapper-extras}/src/test/java/org/elasticsearch/index/mapper/TokenCountFieldMapperIntegrationIT.java (99%) rename {core => modules/mapper-extras}/src/test/java/org/elasticsearch/index/mapper/TokenCountFieldMapperTests.java (99%) create mode 100644 qa/integration-bwc/build.gradle rename {core => qa/integration-bwc}/src/test/java/org/elasticsearch/action/admin/indices/template/BWCTemplateTests.java (91%) rename {core => qa/integration-bwc}/src/test/resources/org/elasticsearch/action/admin/indices/template/filebeat-5.0.template.json (100%) rename {core => qa/integration-bwc}/src/test/resources/org/elasticsearch/action/admin/indices/template/metricbeat-5.0.template.json (100%) rename {core => qa/integration-bwc}/src/test/resources/org/elasticsearch/action/admin/indices/template/packetbeat-5.0.template.json (100%) rename {core => qa/integration-bwc}/src/test/resources/org/elasticsearch/action/admin/indices/template/winlogbeat-5.0.template.json (100%) diff --git a/buildSrc/src/main/resources/checkstyle_suppressions.xml b/buildSrc/src/main/resources/checkstyle_suppressions.xml index bd6d321bb1710..f3ac73690a95b 100644 --- a/buildSrc/src/main/resources/checkstyle_suppressions.xml +++ b/buildSrc/src/main/resources/checkstyle_suppressions.xml @@ -596,7 +596,6 @@ - diff --git a/core/src/main/java/org/elasticsearch/index/search/QueryParserHelper.java b/core/src/main/java/org/elasticsearch/index/search/QueryParserHelper.java index e6846543b8cac..18a124d86b35c 100644 --- a/core/src/main/java/org/elasticsearch/index/search/QueryParserHelper.java +++ b/core/src/main/java/org/elasticsearch/index/search/QueryParserHelper.java @@ -28,7 +28,6 @@ import org.elasticsearch.index.mapper.MapperService; import org.elasticsearch.index.mapper.MetadataFieldMapper; import org.elasticsearch.index.mapper.NumberFieldMapper; -import org.elasticsearch.index.mapper.ScaledFloatFieldMapper; import org.elasticsearch.index.mapper.TextFieldMapper; import org.elasticsearch.index.query.QueryShardContext; @@ -44,6 +43,7 @@ */ public final class QueryParserHelper { // Mapping types the "all-ish" query can be executed against + // TODO: Fix the API so that we don't need a hardcoded list of types private static final Set ALLOWED_QUERY_MAPPER_TYPES; static { @@ -54,7 +54,7 @@ public final class QueryParserHelper { for (NumberFieldMapper.NumberType nt : NumberFieldMapper.NumberType.values()) { ALLOWED_QUERY_MAPPER_TYPES.add(nt.typeName()); } - ALLOWED_QUERY_MAPPER_TYPES.add(ScaledFloatFieldMapper.CONTENT_TYPE); + ALLOWED_QUERY_MAPPER_TYPES.add("scaled_float"); ALLOWED_QUERY_MAPPER_TYPES.add(TextFieldMapper.CONTENT_TYPE); } diff --git a/core/src/main/java/org/elasticsearch/indices/IndicesModule.java b/core/src/main/java/org/elasticsearch/indices/IndicesModule.java index e1d2b169c7fc3..3e808ba90c46f 100644 --- a/core/src/main/java/org/elasticsearch/indices/IndicesModule.java +++ b/core/src/main/java/org/elasticsearch/indices/IndicesModule.java @@ -45,11 +45,9 @@ import org.elasticsearch.index.mapper.ParentFieldMapper; import org.elasticsearch.index.mapper.RangeFieldMapper; import org.elasticsearch.index.mapper.RoutingFieldMapper; -import org.elasticsearch.index.mapper.ScaledFloatFieldMapper; import org.elasticsearch.index.mapper.SeqNoFieldMapper; import org.elasticsearch.index.mapper.SourceFieldMapper; import org.elasticsearch.index.mapper.TextFieldMapper; -import org.elasticsearch.index.mapper.TokenCountFieldMapper; import org.elasticsearch.index.mapper.TypeFieldMapper; import org.elasticsearch.index.mapper.UidFieldMapper; import org.elasticsearch.index.mapper.VersionFieldMapper; @@ -102,10 +100,8 @@ private Map getMappers(List mapperPlugi mappers.put(BinaryFieldMapper.CONTENT_TYPE, new BinaryFieldMapper.TypeParser()); mappers.put(DateFieldMapper.CONTENT_TYPE, new DateFieldMapper.TypeParser()); mappers.put(IpFieldMapper.CONTENT_TYPE, new IpFieldMapper.TypeParser()); - mappers.put(ScaledFloatFieldMapper.CONTENT_TYPE, new ScaledFloatFieldMapper.TypeParser()); mappers.put(TextFieldMapper.CONTENT_TYPE, new TextFieldMapper.TypeParser()); mappers.put(KeywordFieldMapper.CONTENT_TYPE, new KeywordFieldMapper.TypeParser()); - mappers.put(TokenCountFieldMapper.CONTENT_TYPE, new TokenCountFieldMapper.TypeParser()); mappers.put(ObjectMapper.CONTENT_TYPE, new ObjectMapper.TypeParser()); mappers.put(ObjectMapper.NESTED_CONTENT_TYPE, new ObjectMapper.TypeParser()); mappers.put(CompletionFieldMapper.CONTENT_TYPE, new CompletionFieldMapper.TypeParser()); diff --git a/core/src/test/java/org/elasticsearch/get/GetActionIT.java b/core/src/test/java/org/elasticsearch/get/GetActionIT.java index f9c4b0d960638..1fd6084a231dc 100644 --- a/core/src/test/java/org/elasticsearch/get/GetActionIT.java +++ b/core/src/test/java/org/elasticsearch/get/GetActionIT.java @@ -19,7 +19,6 @@ package org.elasticsearch.get; -import org.elasticsearch.ElasticsearchException; import org.elasticsearch.Version; import org.elasticsearch.action.DocWriteResponse; import org.elasticsearch.action.ShardOperationFailedException; @@ -913,68 +912,6 @@ void indexSingleDocumentWithStringFieldsGeneratedFromText(boolean stored, boolea index("test", "doc", "1", doc); } - public void testGeneratedNumberFieldsUnstored() throws IOException { - indexSingleDocumentWithNumericFieldsGeneratedFromText(false, randomBoolean()); - String[] fieldsList = {"token_count", "text.token_count"}; - // before refresh - document is only in translog - assertGetFieldsAlwaysNull(indexOrAlias(), "doc", "1", fieldsList); - refresh(); - //after refresh - document is in translog and also indexed - assertGetFieldsAlwaysNull(indexOrAlias(), "doc", "1", fieldsList); - flush(); - //after flush - document is in not anymore translog - only indexed - assertGetFieldsAlwaysNull(indexOrAlias(), "doc", "1", fieldsList); - } - - public void testGeneratedNumberFieldsStored() throws IOException { - indexSingleDocumentWithNumericFieldsGeneratedFromText(true, randomBoolean()); - String[] fieldsList = {"token_count", "text.token_count"}; - assertGetFieldsAlwaysWorks(indexOrAlias(), "doc", "1", fieldsList); - flush(); - //after flush - document is in not anymore translog - only indexed - assertGetFieldsAlwaysWorks(indexOrAlias(), "doc", "1", fieldsList); - } - - void indexSingleDocumentWithNumericFieldsGeneratedFromText(boolean stored, boolean sourceEnabled) { - String storedString = stored ? "true" : "false"; - String createIndexSource = "{\n" + - " \"settings\": {\n" + - " \"index.translog.flush_threshold_size\": \"1pb\",\n" + - " \"refresh_interval\": \"-1\"\n" + - " },\n" + - " \"mappings\": {\n" + - " \"doc\": {\n" + - " \"_source\" : {\"enabled\" : " + sourceEnabled + "}," + - " \"properties\": {\n" + - " \"token_count\": {\n" + - " \"type\": \"token_count\",\n" + - " \"analyzer\": \"standard\",\n" + - " \"store\": \"" + storedString + "\"" + - " },\n" + - " \"text\": {\n" + - " \"type\": \"text\",\n" + - " \"fields\": {\n" + - " \"token_count\": {\n" + - " \"type\": \"token_count\",\n" + - " \"analyzer\": \"standard\",\n" + - " \"store\": \"" + storedString + "\"" + - " }\n" + - " }\n" + - " }" + - " }\n" + - " }\n" + - " }\n" + - "}"; - - assertAcked(prepareCreate("test").addAlias(new Alias("alias")).setSource(createIndexSource, XContentType.JSON)); - ensureGreen(); - String doc = "{\n" + - " \"token_count\": \"A text with five words.\",\n" + - " \"text\": \"A text with five words.\"\n" + - "}\n"; - index("test", "doc", "1", doc); - } - private void assertGetFieldsAlwaysWorks(String index, String type, String docId, String[] fields) { assertGetFieldsAlwaysWorks(index, type, docId, fields, null); } @@ -997,18 +934,6 @@ private void assertGetFieldWorks(String index, String type, String docId, String assertNotNull(response.getField(field)); } - private void assertGetFieldException(String index, String type, String docId, String field) { - try { - client().prepareGet().setIndex(index).setType(type).setId(docId).setStoredFields(field); - fail(); - } catch (ElasticsearchException e) { - assertTrue(e.getMessage().contains("You can only get this field after refresh() has been called.")); - } - MultiGetResponse multiGetResponse = client().prepareMultiGet().add(new MultiGetRequest.Item(index, type, docId).storedFields(field)).get(); - assertNull(multiGetResponse.getResponses()[0].getResponse()); - assertTrue(multiGetResponse.getResponses()[0].getFailure().getMessage().contains("You can only get this field after refresh() has been called.")); - } - protected void assertGetFieldsNull(String index, String type, String docId, String[] fields) { assertGetFieldsNull(index, type, docId, fields, null); } diff --git a/core/src/test/java/org/elasticsearch/index/mapper/MultiFieldTests.java b/core/src/test/java/org/elasticsearch/index/mapper/MultiFieldTests.java index eb1148e9f4598..26fc15bf6621b 100644 --- a/core/src/test/java/org/elasticsearch/index/mapper/MultiFieldTests.java +++ b/core/src/test/java/org/elasticsearch/index/mapper/MultiFieldTests.java @@ -106,14 +106,6 @@ private void testMultiField(String mapping) throws Exception { assertThat(docMapper.mappers().getMapper("name.test1").fieldType().tokenized(), equalTo(true)); assertThat(docMapper.mappers().getMapper("name.test1").fieldType().eagerGlobalOrdinals(), equalTo(true)); - assertThat(docMapper.mappers().getMapper("name.test2"), notNullValue()); - assertThat(docMapper.mappers().getMapper("name.test2"), instanceOf(TokenCountFieldMapper.class)); - assertNotSame(IndexOptions.NONE, docMapper.mappers().getMapper("name.test2").fieldType().indexOptions()); - assertThat(docMapper.mappers().getMapper("name.test2").fieldType().stored(), equalTo(true)); - assertThat(docMapper.mappers().getMapper("name.test2").fieldType().tokenized(), equalTo(false)); - assertThat(((TokenCountFieldMapper) docMapper.mappers().getMapper("name.test2")).analyzer(), equalTo("simple")); - assertThat(((TokenCountFieldMapper) docMapper.mappers().getMapper("name.test2")).analyzer(), equalTo("simple")); - assertThat(docMapper.mappers().getMapper("object1.multi1"), notNullValue()); assertThat(docMapper.mappers().getMapper("object1.multi1"), instanceOf(DateFieldMapper.class)); assertThat(docMapper.mappers().getMapper("object1.multi1.string"), notNullValue()); diff --git a/core/src/test/java/org/elasticsearch/index/mapper/MultiFieldsIntegrationIT.java b/core/src/test/java/org/elasticsearch/index/mapper/MultiFieldsIntegrationIT.java index ae922e6a731f8..8dbddcc5daa54 100644 --- a/core/src/test/java/org/elasticsearch/index/mapper/MultiFieldsIntegrationIT.java +++ b/core/src/test/java/org/elasticsearch/index/mapper/MultiFieldsIntegrationIT.java @@ -130,42 +130,6 @@ public void testGeoPointMultiField() throws Exception { assertThat(countResponse.getHits().getTotalHits(), equalTo(1L)); } - public void testTokenCountMultiField() throws Exception { - assertAcked( - client().admin().indices().prepareCreate("my-index") - .addMapping("my-type", XContentFactory.jsonBuilder().startObject().startObject("my-type") - .startObject("properties") - .startObject("a") - .field("type", "token_count") - .field("analyzer", "simple") - .startObject("fields") - .startObject("b") - .field("type", "keyword") - .endObject() - .endObject() - .endObject() - .endObject() - .endObject().endObject()) - ); - - GetMappingsResponse getMappingsResponse = client().admin().indices().prepareGetMappings("my-index").get(); - MappingMetaData mappingMetaData = getMappingsResponse.mappings().get("my-index").get("my-type"); - assertThat(mappingMetaData, not(nullValue())); - Map mappingSource = mappingMetaData.sourceAsMap(); - Map aField = ((Map) XContentMapValues.extractValue("properties.a", mappingSource)); - assertThat(aField.size(), equalTo(3)); - assertThat(aField.get("type").toString(), equalTo("token_count")); - assertThat(aField.get("fields"), notNullValue()); - - Map bField = ((Map) XContentMapValues.extractValue("properties.a.fields.b", mappingSource)); - assertThat(bField.size(), equalTo(1)); - assertThat(bField.get("type").toString(), equalTo("keyword")); - - client().prepareIndex("my-index", "my-type", "1").setSource("a", "my tokens").setRefreshPolicy(IMMEDIATE).get(); - SearchResponse countResponse = client().prepareSearch("my-index").setSize(0).setQuery(matchQuery("a.b", "my tokens")).get(); - assertThat(countResponse.getHits().getTotalHits(), equalTo(1L)); - } - public void testCompletionMultiField() throws Exception { assertAcked( client().admin().indices().prepareCreate("my-index") diff --git a/core/src/test/java/org/elasticsearch/index/mapper/NumberFieldTypeTests.java b/core/src/test/java/org/elasticsearch/index/mapper/NumberFieldTypeTests.java index 0066c5a7798b6..6d5ca1add74d5 100644 --- a/core/src/test/java/org/elasticsearch/index/mapper/NumberFieldTypeTests.java +++ b/core/src/test/java/org/elasticsearch/index/mapper/NumberFieldTypeTests.java @@ -49,9 +49,7 @@ import java.math.BigInteger; import java.nio.charset.StandardCharsets; import java.util.Arrays; -import java.util.HashMap; import java.util.List; -import java.util.Map; import java.util.function.Supplier; import static org.hamcrest.Matchers.containsString; @@ -500,4 +498,25 @@ static OutOfRangeSpec of(NumberType t, V v, String m) { message = m; } } + + public void testDisplayValue() { + for (NumberFieldMapper.NumberType type : NumberFieldMapper.NumberType.values()) { + NumberFieldMapper.NumberFieldType fieldType = new NumberFieldMapper.NumberFieldType(type); + assertNull(fieldType.valueForDisplay(null)); + } + assertEquals(Byte.valueOf((byte) 3), + new NumberFieldMapper.NumberFieldType(NumberFieldMapper.NumberType.BYTE).valueForDisplay(3)); + assertEquals(Short.valueOf((short) 3), + new NumberFieldMapper.NumberFieldType(NumberFieldMapper.NumberType.SHORT).valueForDisplay(3)); + assertEquals(Integer.valueOf(3), + new NumberFieldMapper.NumberFieldType(NumberFieldMapper.NumberType.INTEGER).valueForDisplay(3)); + assertEquals(Long.valueOf(3), + new NumberFieldMapper.NumberFieldType(NumberFieldMapper.NumberType.LONG).valueForDisplay(3L)); + assertEquals(Double.valueOf(1.2), + new NumberFieldMapper.NumberFieldType(NumberFieldMapper.NumberType.HALF_FLOAT).valueForDisplay(1.2)); + assertEquals(Double.valueOf(1.2), + new NumberFieldMapper.NumberFieldType(NumberFieldMapper.NumberType.FLOAT).valueForDisplay(1.2)); + assertEquals(Double.valueOf(1.2), + new NumberFieldMapper.NumberFieldType(NumberFieldMapper.NumberType.DOUBLE).valueForDisplay(1.2)); + } } diff --git a/core/src/test/java/org/elasticsearch/search/query/QueryStringIT.java b/core/src/test/java/org/elasticsearch/search/query/QueryStringIT.java index a44d6ff6d5e84..ac72fc6fcb96d 100644 --- a/core/src/test/java/org/elasticsearch/search/query/QueryStringIT.java +++ b/core/src/test/java/org/elasticsearch/search/query/QueryStringIT.java @@ -71,10 +71,6 @@ public void setup() throws Exception { ensureGreen("test"); } - private QueryStringQueryBuilder lenientQuery(String queryText) { - return queryStringQuery(queryText).lenient(true); - } - public void testBasicAllQuery() throws Exception { List reqs = new ArrayList<>(); reqs.add(client().prepareIndex("test", "doc", "1").setSource("f1", "foo bar baz")); @@ -177,8 +173,6 @@ public void testDocWithAllTypes() throws Exception { assertHits(resp.getHits(), "1"); resp = client().prepareSearch("test").setQuery(queryStringQuery("1.5")).get(); assertHits(resp.getHits(), "1"); - resp = client().prepareSearch("test").setQuery(queryStringQuery("12.23")).get(); - assertHits(resp.getHits(), "1"); resp = client().prepareSearch("test").setQuery(queryStringQuery("127.0.0.1")).get(); assertHits(resp.getHits(), "1"); // binary doesn't match diff --git a/core/src/test/java/org/elasticsearch/search/query/SimpleQueryStringIT.java b/core/src/test/java/org/elasticsearch/search/query/SimpleQueryStringIT.java index 398b30abbe14e..bd4bf0624feb1 100644 --- a/core/src/test/java/org/elasticsearch/search/query/SimpleQueryStringIT.java +++ b/core/src/test/java/org/elasticsearch/search/query/SimpleQueryStringIT.java @@ -498,8 +498,6 @@ public void testDocWithAllTypes() throws Exception { assertHits(resp.getHits(), "1"); resp = client().prepareSearch("test").setQuery(simpleQueryStringQuery("1.5")).get(); assertHits(resp.getHits(), "1"); - resp = client().prepareSearch("test").setQuery(simpleQueryStringQuery("12.23")).get(); - assertHits(resp.getHits(), "1"); resp = client().prepareSearch("test").setQuery(simpleQueryStringQuery("127.0.0.1")).get(); assertHits(resp.getHits(), "1"); // binary doesn't match diff --git a/core/src/test/resources/org/elasticsearch/index/mapper/multifield/test-multi-fields.json b/core/src/test/resources/org/elasticsearch/index/mapper/multifield/test-multi-fields.json index 7d4f819a2508f..b7317aba3c148 100644 --- a/core/src/test/resources/org/elasticsearch/index/mapper/multifield/test-multi-fields.json +++ b/core/src/test/resources/org/elasticsearch/index/mapper/multifield/test-multi-fields.json @@ -18,12 +18,6 @@ "type": "text", "store": true, "eager_global_ordinals": true - }, - "test2": { - "type": "token_count", - "index": true, - "store": true, - "analyzer": "simple" } } }, diff --git a/core/src/test/resources/org/elasticsearch/search/query/all-example-document.json b/core/src/test/resources/org/elasticsearch/search/query/all-example-document.json index 9e4d04930a71a..abc22939b6422 100644 --- a/core/src/test/resources/org/elasticsearch/search/query/all-example-document.json +++ b/core/src/test/resources/org/elasticsearch/search/query/all-example-document.json @@ -21,7 +21,6 @@ "f_long": "42", "f_float": "1.7", "f_hfloat": "1.5", - "f_sfloat": "12.23", "f_ip": "127.0.0.1", "f_binary": "VGhpcyBpcyBzb21lIGJpbmFyeSBkYXRhCg==", "f_suggest": { diff --git a/core/src/test/resources/org/elasticsearch/search/query/all-query-index.json b/core/src/test/resources/org/elasticsearch/search/query/all-query-index.json index 89c412171254a..3b068132d5142 100644 --- a/core/src/test/resources/org/elasticsearch/search/query/all-query-index.json +++ b/core/src/test/resources/org/elasticsearch/search/query/all-query-index.json @@ -18,8 +18,7 @@ "f_multi": { "type": "text", "fields": { - "raw": {"type": "keyword"}, - "f_token_count": {"type": "token_count", "analyzer": "standard"} + "raw": {"type": "keyword"} } }, "f_object": { @@ -49,7 +48,6 @@ "f_long": {"type": "long"}, "f_float": {"type": "float"}, "f_hfloat": {"type": "half_float"}, - "f_sfloat": {"type": "scaled_float", "scaling_factor": 100}, "f_ip": {"type": "ip"}, "f_binary": {"type": "binary"}, "f_suggest": {"type": "completion"}, diff --git a/modules/mapper-extras/build.gradle b/modules/mapper-extras/build.gradle new file mode 100644 index 0000000000000..7831de3a68e94 --- /dev/null +++ b/modules/mapper-extras/build.gradle @@ -0,0 +1,23 @@ +/* + * 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. + */ + +esplugin { + description 'Adds advanced field mappers' + classname 'org.elasticsearch.index.mapper.MapperExtrasPlugin' +} diff --git a/modules/mapper-extras/src/main/java/org/elasticsearch/index/mapper/MapperExtrasPlugin.java b/modules/mapper-extras/src/main/java/org/elasticsearch/index/mapper/MapperExtrasPlugin.java new file mode 100644 index 0000000000000..2b249a5fe6e09 --- /dev/null +++ b/modules/mapper-extras/src/main/java/org/elasticsearch/index/mapper/MapperExtrasPlugin.java @@ -0,0 +1,39 @@ +/* + * 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.mapper; + +import org.elasticsearch.plugins.MapperPlugin; +import org.elasticsearch.plugins.Plugin; + +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.Map; + +public class MapperExtrasPlugin extends Plugin implements MapperPlugin { + + @Override + public Map getMappers() { + Map mappers = new LinkedHashMap<>(); + mappers.put(ScaledFloatFieldMapper.CONTENT_TYPE, new ScaledFloatFieldMapper.TypeParser()); + mappers.put(TokenCountFieldMapper.CONTENT_TYPE, new TokenCountFieldMapper.TypeParser()); + return Collections.unmodifiableMap(mappers); + } + +} diff --git a/core/src/main/java/org/elasticsearch/index/mapper/ScaledFloatFieldMapper.java b/modules/mapper-extras/src/main/java/org/elasticsearch/index/mapper/ScaledFloatFieldMapper.java similarity index 100% rename from core/src/main/java/org/elasticsearch/index/mapper/ScaledFloatFieldMapper.java rename to modules/mapper-extras/src/main/java/org/elasticsearch/index/mapper/ScaledFloatFieldMapper.java diff --git a/core/src/main/java/org/elasticsearch/index/mapper/TokenCountFieldMapper.java b/modules/mapper-extras/src/main/java/org/elasticsearch/index/mapper/TokenCountFieldMapper.java similarity index 100% rename from core/src/main/java/org/elasticsearch/index/mapper/TokenCountFieldMapper.java rename to modules/mapper-extras/src/main/java/org/elasticsearch/index/mapper/TokenCountFieldMapper.java diff --git a/core/src/test/java/org/elasticsearch/index/mapper/ScaledFloatFieldMapperTests.java b/modules/mapper-extras/src/test/java/org/elasticsearch/index/mapper/ScaledFloatFieldMapperTests.java similarity index 99% rename from core/src/test/java/org/elasticsearch/index/mapper/ScaledFloatFieldMapperTests.java rename to modules/mapper-extras/src/test/java/org/elasticsearch/index/mapper/ScaledFloatFieldMapperTests.java index c0650c9c72e5b..42f8bff544912 100644 --- a/core/src/test/java/org/elasticsearch/index/mapper/ScaledFloatFieldMapperTests.java +++ b/modules/mapper-extras/src/test/java/org/elasticsearch/index/mapper/ScaledFloatFieldMapperTests.java @@ -50,7 +50,7 @@ public void setup() { @Override protected Collection> getPlugins() { - return pluginList(InternalSettingsPlugin.class); + return pluginList(InternalSettingsPlugin.class, MapperExtrasPlugin.class); } public void testDefaults() throws Exception { diff --git a/core/src/test/java/org/elasticsearch/index/mapper/ScaledFloatFieldTypeTests.java b/modules/mapper-extras/src/test/java/org/elasticsearch/index/mapper/ScaledFloatFieldTypeTests.java similarity index 100% rename from core/src/test/java/org/elasticsearch/index/mapper/ScaledFloatFieldTypeTests.java rename to modules/mapper-extras/src/test/java/org/elasticsearch/index/mapper/ScaledFloatFieldTypeTests.java diff --git a/core/src/test/java/org/elasticsearch/index/mapper/TokenCountFieldMapperIntegrationIT.java b/modules/mapper-extras/src/test/java/org/elasticsearch/index/mapper/TokenCountFieldMapperIntegrationIT.java similarity index 99% rename from core/src/test/java/org/elasticsearch/index/mapper/TokenCountFieldMapperIntegrationIT.java rename to modules/mapper-extras/src/test/java/org/elasticsearch/index/mapper/TokenCountFieldMapperIntegrationIT.java index 75b588df85ad3..3d69b0d013e29 100644 --- a/core/src/test/java/org/elasticsearch/index/mapper/TokenCountFieldMapperIntegrationIT.java +++ b/modules/mapper-extras/src/test/java/org/elasticsearch/index/mapper/TokenCountFieldMapperIntegrationIT.java @@ -220,7 +220,8 @@ private void assertSearchHit(SearchHit hit, int[] standardTermCounts, int[] engl assertThat(hit.field("foo.token_count_without_position_increments"), not(nullValue())); assertThat(hit.field("foo.token_count_without_position_increments").getValues().size(), equalTo(englishTermCounts.length)); for (int i = 0; i < englishTermCounts.length; i++) { - assertThat((Integer) hit.field("foo.token_count_without_position_increments").getValues().get(i), equalTo(englishTermCounts[i])); + assertThat((Integer) hit.field("foo.token_count_without_position_increments").getValues().get(i), + equalTo(englishTermCounts[i])); } if (loadCountedFields && storeCountedFields) { diff --git a/core/src/test/java/org/elasticsearch/index/mapper/TokenCountFieldMapperTests.java b/modules/mapper-extras/src/test/java/org/elasticsearch/index/mapper/TokenCountFieldMapperTests.java similarity index 99% rename from core/src/test/java/org/elasticsearch/index/mapper/TokenCountFieldMapperTests.java rename to modules/mapper-extras/src/test/java/org/elasticsearch/index/mapper/TokenCountFieldMapperTests.java index 861586370aef8..633f10276096c 100644 --- a/core/src/test/java/org/elasticsearch/index/mapper/TokenCountFieldMapperTests.java +++ b/modules/mapper-extras/src/test/java/org/elasticsearch/index/mapper/TokenCountFieldMapperTests.java @@ -45,6 +45,12 @@ * Test for {@link TokenCountFieldMapper}. */ public class TokenCountFieldMapperTests extends ESSingleNodeTestCase { + + @Override + protected Collection> getPlugins() { + return pluginList(InternalSettingsPlugin.class, MapperExtrasPlugin.class); + } + public void testMerge() throws IOException { String stage1Mapping = XContentFactory.jsonBuilder().startObject() .startObject("person") @@ -122,11 +128,6 @@ public TokenStreamComponents createComponents(String fieldName) { return analyzer; } - @Override - protected Collection> getPlugins() { - return pluginList(InternalSettingsPlugin.class); - } - public void testEmptyName() throws IOException { IndexService indexService = createIndex("test"); DocumentMapperParser parser = indexService.mapperService().documentMapperParser(); diff --git a/qa/integration-bwc/build.gradle b/qa/integration-bwc/build.gradle new file mode 100644 index 0000000000000..4469096c6b1aa --- /dev/null +++ b/qa/integration-bwc/build.gradle @@ -0,0 +1,35 @@ +/* + * 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. + */ + +import org.elasticsearch.gradle.test.RestIntegTestTask +import org.elasticsearch.gradle.Version +import org.elasticsearch.gradle.VersionProperties + +apply plugin: 'elasticsearch.standalone-test' + +// This is a top level task which we will add dependencies to below. +// It is a single task that can be used to backcompat tests against all versions. +task bwcTest { + description = 'Runs backwards compatibility tests.' + group = 'verification' +} + +dependencies { + testCompile project(path: ':modules:mapper-extras', configuration: 'runtime') +} diff --git a/core/src/test/java/org/elasticsearch/action/admin/indices/template/BWCTemplateTests.java b/qa/integration-bwc/src/test/java/org/elasticsearch/action/admin/indices/template/BWCTemplateTests.java similarity index 91% rename from core/src/test/java/org/elasticsearch/action/admin/indices/template/BWCTemplateTests.java rename to qa/integration-bwc/src/test/java/org/elasticsearch/action/admin/indices/template/BWCTemplateTests.java index 40c314edd41cd..a161624ef29fd 100644 --- a/core/src/test/java/org/elasticsearch/action/admin/indices/template/BWCTemplateTests.java +++ b/qa/integration-bwc/src/test/java/org/elasticsearch/action/admin/indices/template/BWCTemplateTests.java @@ -20,8 +20,12 @@ package org.elasticsearch.action.admin.indices.template; import org.elasticsearch.common.xcontent.XContentType; +import org.elasticsearch.index.mapper.MapperExtrasPlugin; +import org.elasticsearch.plugins.Plugin; import org.elasticsearch.test.ESSingleNodeTestCase; +import java.util.Collection; + import static org.elasticsearch.test.StreamsUtils.copyToBytesFromClasspath; /** @@ -29,6 +33,11 @@ * prior to their 5.x releases work for newly created indices */ public class BWCTemplateTests extends ESSingleNodeTestCase { + @Override + protected Collection> getPlugins() { + return pluginList(MapperExtrasPlugin.class); + } + public void testBeatsTemplatesBWC() throws Exception { byte[] metricBeat = copyToBytesFromClasspath("/org/elasticsearch/action/admin/indices/template/metricbeat-5.0.template.json"); byte[] packetBeat = copyToBytesFromClasspath("/org/elasticsearch/action/admin/indices/template/packetbeat-5.0.template.json"); diff --git a/core/src/test/resources/org/elasticsearch/action/admin/indices/template/filebeat-5.0.template.json b/qa/integration-bwc/src/test/resources/org/elasticsearch/action/admin/indices/template/filebeat-5.0.template.json similarity index 100% rename from core/src/test/resources/org/elasticsearch/action/admin/indices/template/filebeat-5.0.template.json rename to qa/integration-bwc/src/test/resources/org/elasticsearch/action/admin/indices/template/filebeat-5.0.template.json diff --git a/core/src/test/resources/org/elasticsearch/action/admin/indices/template/metricbeat-5.0.template.json b/qa/integration-bwc/src/test/resources/org/elasticsearch/action/admin/indices/template/metricbeat-5.0.template.json similarity index 100% rename from core/src/test/resources/org/elasticsearch/action/admin/indices/template/metricbeat-5.0.template.json rename to qa/integration-bwc/src/test/resources/org/elasticsearch/action/admin/indices/template/metricbeat-5.0.template.json diff --git a/core/src/test/resources/org/elasticsearch/action/admin/indices/template/packetbeat-5.0.template.json b/qa/integration-bwc/src/test/resources/org/elasticsearch/action/admin/indices/template/packetbeat-5.0.template.json similarity index 100% rename from core/src/test/resources/org/elasticsearch/action/admin/indices/template/packetbeat-5.0.template.json rename to qa/integration-bwc/src/test/resources/org/elasticsearch/action/admin/indices/template/packetbeat-5.0.template.json diff --git a/core/src/test/resources/org/elasticsearch/action/admin/indices/template/winlogbeat-5.0.template.json b/qa/integration-bwc/src/test/resources/org/elasticsearch/action/admin/indices/template/winlogbeat-5.0.template.json similarity index 100% rename from core/src/test/resources/org/elasticsearch/action/admin/indices/template/winlogbeat-5.0.template.json rename to qa/integration-bwc/src/test/resources/org/elasticsearch/action/admin/indices/template/winlogbeat-5.0.template.json diff --git a/settings.gradle b/settings.gradle index 220dda259b221..698f5600684bb 100644 --- a/settings.gradle +++ b/settings.gradle @@ -35,6 +35,7 @@ List projects = [ 'modules:lang-expression', 'modules:lang-mustache', 'modules:lang-painless', + 'modules:mapper-extras', 'modules:parent-join', 'modules:percolator', 'modules:reindex', @@ -65,6 +66,7 @@ List projects = [ 'qa:auto-create-index', 'qa:evil-tests', 'qa:full-cluster-restart', + 'qa:integration-bwc', 'qa:mixed-cluster', 'qa:multi-cluster-search', 'qa:no-bootstrap-tests', From 4fcab0b800ff1ec304dcbc7ba4e35247735f973e Mon Sep 17 00:00:00 2001 From: Adrien Grand Date: Mon, 11 Sep 2017 16:05:24 +0200 Subject: [PATCH 2/8] Move the `range` fields to the module too. --- .../index/mapper/CustomDocValuesField.java | 6 +- .../index/mapper/NumberFieldMapper.java | 83 +++-- .../index/query/RangeQueryBuilder.java | 1 - .../elasticsearch/indices/IndicesModule.java | 4 - .../index/query/RangeQueryBuilderTests.java | 17 +- .../index/query/TermsQueryBuilderTests.java | 3 +- .../search/query/SearchQueryIT.java | 15 - .../queries/BinaryDocValuesRangeQuery.java | 0 .../index/mapper/BinaryRangeUtil.java | 0 .../index/mapper/MapperExtrasPlugin.java | 3 + .../index/mapper/RangeFieldMapper.java | 13 +- ...ndomBinaryDocValuesRangeQueryTestCase.java | 12 +- .../BinaryDocValuesRangeQueryTests.java | 0 ...eRandomBinaryDocValuesRangeQueryTests.java | 6 +- ...tRandomBinaryDocValuesRangeQueryTests.java | 6 +- ...sRandomBinaryDocValuesRangeQueryTests.java | 6 +- ...rRandomBinaryDocValuesRangeQueryTests.java | 6 +- ...gRandomBinaryDocValuesRangeQueryTests.java | 6 +- .../index/mapper/BinaryRangeUtilTests.java | 0 .../MapperExtrasClientYamlTestSuiteIT.java | 40 +++ .../index/mapper/RangeFieldMapperTests.java | 9 + .../index/mapper/RangeFieldTypeTests.java | 2 +- .../test/range/.10_basic.yml.swp | Bin 0 -> 20480 bytes .../rest-api-spec/test/range/10_basic.yml | 334 ++++++++++++++++++ .../test/scaled_float/10_basic.yml | 105 ++++++ modules/percolator/build.gradle | 1 + .../test/search.aggregation/20_terms.yml | 53 --- .../AbstractNumericFieldMapperTestCase.java | 0 .../test/AbstractQueryTestCase.java | 12 +- 29 files changed, 569 insertions(+), 174 deletions(-) rename {core => modules/mapper-extras}/src/main/java/org/apache/lucene/queries/BinaryDocValuesRangeQuery.java (100%) rename {core => modules/mapper-extras}/src/main/java/org/elasticsearch/index/mapper/BinaryRangeUtil.java (100%) rename {core => modules/mapper-extras}/src/main/java/org/elasticsearch/index/mapper/RangeFieldMapper.java (98%) rename {core => modules/mapper-extras}/src/test/java/org/apache/lucene/queries/BaseRandomBinaryDocValuesRangeQueryTestCase.java (92%) rename {core => modules/mapper-extras}/src/test/java/org/apache/lucene/queries/BinaryDocValuesRangeQueryTests.java (100%) rename {core => modules/mapper-extras}/src/test/java/org/apache/lucene/queries/DoubleRandomBinaryDocValuesRangeQueryTests.java (96%) rename {core => modules/mapper-extras}/src/test/java/org/apache/lucene/queries/FloatRandomBinaryDocValuesRangeQueryTests.java (96%) rename {core => modules/mapper-extras}/src/test/java/org/apache/lucene/queries/InetAddressRandomBinaryDocValuesRangeQueryTests.java (96%) rename {core => modules/mapper-extras}/src/test/java/org/apache/lucene/queries/IntegerRandomBinaryDocValuesRangeQueryTests.java (96%) rename {core => modules/mapper-extras}/src/test/java/org/apache/lucene/queries/LongRandomBinaryDocValuesRangeQueryTests.java (96%) rename {core => modules/mapper-extras}/src/test/java/org/elasticsearch/index/mapper/BinaryRangeUtilTests.java (100%) create mode 100644 modules/mapper-extras/src/test/java/org/elasticsearch/index/mapper/MapperExtrasClientYamlTestSuiteIT.java rename {core => modules/mapper-extras}/src/test/java/org/elasticsearch/index/mapper/RangeFieldMapperTests.java (98%) rename {core => modules/mapper-extras}/src/test/java/org/elasticsearch/index/mapper/RangeFieldTypeTests.java (99%) create mode 100644 modules/mapper-extras/src/test/resources/rest-api-spec/test/range/.10_basic.yml.swp create mode 100644 modules/mapper-extras/src/test/resources/rest-api-spec/test/range/10_basic.yml create mode 100644 modules/mapper-extras/src/test/resources/rest-api-spec/test/scaled_float/10_basic.yml rename {core/src/test => test/framework/src/main}/java/org/elasticsearch/index/mapper/AbstractNumericFieldMapperTestCase.java (100%) diff --git a/core/src/main/java/org/elasticsearch/index/mapper/CustomDocValuesField.java b/core/src/main/java/org/elasticsearch/index/mapper/CustomDocValuesField.java index 60fbfc0698cda..f77d480e72298 100644 --- a/core/src/main/java/org/elasticsearch/index/mapper/CustomDocValuesField.java +++ b/core/src/main/java/org/elasticsearch/index/mapper/CustomDocValuesField.java @@ -28,8 +28,8 @@ import java.io.Reader; -// used for binary and geo fields -abstract class CustomDocValuesField implements IndexableField { +// used for binary, geo and range fields +public abstract class CustomDocValuesField implements IndexableField { public static final FieldType TYPE = new FieldType(); static { @@ -39,7 +39,7 @@ abstract class CustomDocValuesField implements IndexableField { private final String name; - CustomDocValuesField(String name) { + protected CustomDocValuesField(String name) { this.name = name; } diff --git a/core/src/main/java/org/elasticsearch/index/mapper/NumberFieldMapper.java b/core/src/main/java/org/elasticsearch/index/mapper/NumberFieldMapper.java index 6f5190b637640..83ebd6d9fb56c 100644 --- a/core/src/main/java/org/elasticsearch/index/mapper/NumberFieldMapper.java +++ b/core/src/main/java/org/elasticsearch/index/mapper/NumberFieldMapper.java @@ -62,8 +62,7 @@ /** A {@link FieldMapper} for numeric types: byte, short, int, long, float and double. */ public class NumberFieldMapper extends FieldMapper { - // this is private since it has a different default - static final Setting COERCE_SETTING = + public static final Setting COERCE_SETTING = Setting.boolSetting("index.mapping.coerce", true, Property.IndexScope); public static class Defaults { @@ -162,7 +161,7 @@ public Mapper.Builder parse(String name, Map node, public enum NumberType { HALF_FLOAT("half_float", NumericType.HALF_FLOAT) { @Override - Float parse(Object value, boolean coerce) { + public Float parse(Object value, boolean coerce) { final float result; if (value instanceof Number) { @@ -178,20 +177,20 @@ Float parse(Object value, boolean coerce) { } @Override - Float parse(XContentParser parser, boolean coerce) throws IOException { + public Float parse(XContentParser parser, boolean coerce) throws IOException { float parsed = parser.floatValue(coerce); validateParsed(parsed); return parsed; } @Override - Query termQuery(String field, Object value) { + public Query termQuery(String field, Object value) { float v = parse(value, false); return HalfFloatPoint.newExactQuery(field, v); } @Override - Query termsQuery(String field, List values) { + public Query termsQuery(String field, List values) { float[] v = new float[values.size()]; for (int i = 0; i < values.size(); ++i) { v[i] = parse(values.get(i), false); @@ -200,7 +199,7 @@ Query termsQuery(String field, List values) { } @Override - Query rangeQuery(String field, Object lowerTerm, Object upperTerm, + public Query rangeQuery(String field, Object lowerTerm, Object upperTerm, boolean includeLower, boolean includeUpper, boolean hasDocValues) { float l = Float.NEGATIVE_INFINITY; @@ -254,7 +253,7 @@ private void validateParsed(float value) { }, FLOAT("float", NumericType.FLOAT) { @Override - Float parse(Object value, boolean coerce) { + public Float parse(Object value, boolean coerce) { final float result; if (value instanceof Number) { @@ -270,20 +269,20 @@ Float parse(Object value, boolean coerce) { } @Override - Float parse(XContentParser parser, boolean coerce) throws IOException { + public Float parse(XContentParser parser, boolean coerce) throws IOException { float parsed = parser.floatValue(coerce); validateParsed(parsed); return parsed; } @Override - Query termQuery(String field, Object value) { + public Query termQuery(String field, Object value) { float v = parse(value, false); return FloatPoint.newExactQuery(field, v); } @Override - Query termsQuery(String field, List values) { + public Query termsQuery(String field, List values) { float[] v = new float[values.size()]; for (int i = 0; i < values.size(); ++i) { v[i] = parse(values.get(i), false); @@ -292,7 +291,7 @@ Query termsQuery(String field, List values) { } @Override - Query rangeQuery(String field, Object lowerTerm, Object upperTerm, + public Query rangeQuery(String field, Object lowerTerm, Object upperTerm, boolean includeLower, boolean includeUpper, boolean hasDocValues) { float l = Float.NEGATIVE_INFINITY; @@ -344,27 +343,27 @@ private void validateParsed(float value) { }, DOUBLE("double", NumericType.DOUBLE) { @Override - Double parse(Object value, boolean coerce) { + public Double parse(Object value, boolean coerce) { double parsed = objectToDouble(value); validateParsed(parsed); return parsed; } @Override - Double parse(XContentParser parser, boolean coerce) throws IOException { + public Double parse(XContentParser parser, boolean coerce) throws IOException { double parsed = parser.doubleValue(coerce); validateParsed(parsed); return parsed; } @Override - Query termQuery(String field, Object value) { + public Query termQuery(String field, Object value) { double v = parse(value, false); return DoublePoint.newExactQuery(field, v); } @Override - Query termsQuery(String field, List values) { + public Query termsQuery(String field, List values) { double[] v = new double[values.size()]; for (int i = 0; i < values.size(); ++i) { v[i] = parse(values.get(i), false); @@ -373,7 +372,7 @@ Query termsQuery(String field, List values) { } @Override - Query rangeQuery(String field, Object lowerTerm, Object upperTerm, + public Query rangeQuery(String field, Object lowerTerm, Object upperTerm, boolean includeLower, boolean includeUpper, boolean hasDocValues) { double l = Double.NEGATIVE_INFINITY; @@ -425,7 +424,7 @@ private void validateParsed(double value) { }, BYTE("byte", NumericType.BYTE) { @Override - Byte parse(Object value, boolean coerce) { + public Byte parse(Object value, boolean coerce) { double doubleValue = objectToDouble(value); if (doubleValue < Byte.MIN_VALUE || doubleValue > Byte.MAX_VALUE) { @@ -443,7 +442,7 @@ Byte parse(Object value, boolean coerce) { } @Override - Short parse(XContentParser parser, boolean coerce) throws IOException { + public Short parse(XContentParser parser, boolean coerce) throws IOException { int value = parser.intValue(coerce); if (value < Byte.MIN_VALUE || value > Byte.MAX_VALUE) { throw new IllegalArgumentException("Value [" + value + "] is out of range for a byte"); @@ -452,17 +451,17 @@ Short parse(XContentParser parser, boolean coerce) throws IOException { } @Override - Query termQuery(String field, Object value) { + public Query termQuery(String field, Object value) { return INTEGER.termQuery(field, value); } @Override - Query termsQuery(String field, List values) { + public Query termsQuery(String field, List values) { return INTEGER.termsQuery(field, values); } @Override - Query rangeQuery(String field, Object lowerTerm, Object upperTerm, + public Query rangeQuery(String field, Object lowerTerm, Object upperTerm, boolean includeLower, boolean includeUpper, boolean hasDocValues) { return INTEGER.rangeQuery(field, lowerTerm, upperTerm, includeLower, includeUpper, hasDocValues); @@ -481,7 +480,7 @@ Number valueForSearch(Number value) { }, SHORT("short", NumericType.SHORT) { @Override - Short parse(Object value, boolean coerce) { + public Short parse(Object value, boolean coerce) { double doubleValue = objectToDouble(value); if (doubleValue < Short.MIN_VALUE || doubleValue > Short.MAX_VALUE) { @@ -499,22 +498,22 @@ Short parse(Object value, boolean coerce) { } @Override - Short parse(XContentParser parser, boolean coerce) throws IOException { + public Short parse(XContentParser parser, boolean coerce) throws IOException { return parser.shortValue(coerce); } @Override - Query termQuery(String field, Object value) { + public Query termQuery(String field, Object value) { return INTEGER.termQuery(field, value); } @Override - Query termsQuery(String field, List values) { + public Query termsQuery(String field, List values) { return INTEGER.termsQuery(field, values); } @Override - Query rangeQuery(String field, Object lowerTerm, Object upperTerm, + public Query rangeQuery(String field, Object lowerTerm, Object upperTerm, boolean includeLower, boolean includeUpper, boolean hasDocValues) { return INTEGER.rangeQuery(field, lowerTerm, upperTerm, includeLower, includeUpper, hasDocValues); @@ -533,7 +532,7 @@ Number valueForSearch(Number value) { }, INTEGER("integer", NumericType.INT) { @Override - Integer parse(Object value, boolean coerce) { + public Integer parse(Object value, boolean coerce) { double doubleValue = objectToDouble(value); if (doubleValue < Integer.MIN_VALUE || doubleValue > Integer.MAX_VALUE) { @@ -551,12 +550,12 @@ Integer parse(Object value, boolean coerce) { } @Override - Integer parse(XContentParser parser, boolean coerce) throws IOException { + public Integer parse(XContentParser parser, boolean coerce) throws IOException { return parser.intValue(coerce); } @Override - Query termQuery(String field, Object value) { + public Query termQuery(String field, Object value) { if (hasDecimalPart(value)) { return Queries.newMatchNoDocsQuery("Value [" + value + "] has a decimal part"); } @@ -565,7 +564,7 @@ Query termQuery(String field, Object value) { } @Override - Query termsQuery(String field, List values) { + public Query termsQuery(String field, List values) { int[] v = new int[values.size()]; int upTo = 0; @@ -586,7 +585,7 @@ Query termsQuery(String field, List values) { } @Override - Query rangeQuery(String field, Object lowerTerm, Object upperTerm, + public Query rangeQuery(String field, Object lowerTerm, Object upperTerm, boolean includeLower, boolean includeUpper, boolean hasDocValues) { int l = Integer.MIN_VALUE; @@ -644,7 +643,7 @@ public List createFields(String name, Number value, }, LONG("long", NumericType.LONG) { @Override - Long parse(Object value, boolean coerce) { + public Long parse(Object value, boolean coerce) { if (value instanceof Long) { return (Long)value; } @@ -665,12 +664,12 @@ Long parse(Object value, boolean coerce) { } @Override - Long parse(XContentParser parser, boolean coerce) throws IOException { + public Long parse(XContentParser parser, boolean coerce) throws IOException { return parser.longValue(coerce); } @Override - Query termQuery(String field, Object value) { + public Query termQuery(String field, Object value) { if (hasDecimalPart(value)) { return Queries.newMatchNoDocsQuery("Value [" + value + "] has a decimal part"); } @@ -679,7 +678,7 @@ Query termQuery(String field, Object value) { } @Override - Query termsQuery(String field, List values) { + public Query termsQuery(String field, List values) { long[] v = new long[values.size()]; int upTo = 0; @@ -700,7 +699,7 @@ Query termsQuery(String field, List values) { } @Override - Query rangeQuery(String field, Object lowerTerm, Object upperTerm, + public Query rangeQuery(String field, Object lowerTerm, Object upperTerm, boolean includeLower, boolean includeUpper, boolean hasDocValues) { long l = Long.MIN_VALUE; @@ -773,13 +772,13 @@ public final String typeName() { final NumericType numericType() { return numericType; } - abstract Query termQuery(String field, Object value); - abstract Query termsQuery(String field, List values); - abstract Query rangeQuery(String field, Object lowerTerm, Object upperTerm, + public abstract Query termQuery(String field, Object value); + public abstract Query termsQuery(String field, List values); + public abstract Query rangeQuery(String field, Object lowerTerm, Object upperTerm, boolean includeLower, boolean includeUpper, boolean hasDocValues); - abstract Number parse(XContentParser parser, boolean coerce) throws IOException; - abstract Number parse(Object value, boolean coerce); + public abstract Number parse(XContentParser parser, boolean coerce) throws IOException; + public abstract Number parse(Object value, boolean coerce); public abstract List createFields(String name, Number value, boolean indexed, boolean docValued, boolean stored); Number valueForSearch(Number value) { diff --git a/core/src/main/java/org/elasticsearch/index/query/RangeQueryBuilder.java b/core/src/main/java/org/elasticsearch/index/query/RangeQueryBuilder.java index bdf2b6cf530df..0d4ded10d2cbb 100644 --- a/core/src/main/java/org/elasticsearch/index/query/RangeQueryBuilder.java +++ b/core/src/main/java/org/elasticsearch/index/query/RangeQueryBuilder.java @@ -39,7 +39,6 @@ import org.elasticsearch.index.mapper.FieldNamesFieldMapper; import org.elasticsearch.index.mapper.MappedFieldType; import org.elasticsearch.index.mapper.MapperService; -import org.elasticsearch.index.mapper.RangeFieldMapper; import org.joda.time.DateTimeZone; import java.io.IOException; diff --git a/core/src/main/java/org/elasticsearch/indices/IndicesModule.java b/core/src/main/java/org/elasticsearch/indices/IndicesModule.java index 3e808ba90c46f..2751c34a7f314 100644 --- a/core/src/main/java/org/elasticsearch/indices/IndicesModule.java +++ b/core/src/main/java/org/elasticsearch/indices/IndicesModule.java @@ -43,7 +43,6 @@ import org.elasticsearch.index.mapper.NumberFieldMapper; import org.elasticsearch.index.mapper.ObjectMapper; import org.elasticsearch.index.mapper.ParentFieldMapper; -import org.elasticsearch.index.mapper.RangeFieldMapper; import org.elasticsearch.index.mapper.RoutingFieldMapper; import org.elasticsearch.index.mapper.SeqNoFieldMapper; import org.elasticsearch.index.mapper.SourceFieldMapper; @@ -93,9 +92,6 @@ private Map getMappers(List mapperPlugi for (NumberFieldMapper.NumberType type : NumberFieldMapper.NumberType.values()) { mappers.put(type.typeName(), new NumberFieldMapper.TypeParser(type)); } - for (RangeFieldMapper.RangeType type : RangeFieldMapper.RangeType.values()) { - mappers.put(type.typeName(), new RangeFieldMapper.TypeParser(type)); - } mappers.put(BooleanFieldMapper.CONTENT_TYPE, new BooleanFieldMapper.TypeParser()); mappers.put(BinaryFieldMapper.CONTENT_TYPE, new BinaryFieldMapper.TypeParser()); mappers.put(DateFieldMapper.CONTENT_TYPE, new DateFieldMapper.TypeParser()); 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 b101a68185590..a3f90498b52a2 100644 --- a/core/src/test/java/org/elasticsearch/index/query/RangeQueryBuilderTests.java +++ b/core/src/test/java/org/elasticsearch/index/query/RangeQueryBuilderTests.java @@ -19,8 +19,6 @@ package org.elasticsearch.index.query; -import com.carrotsearch.randomizedtesting.generators.RandomPicks; - import org.apache.lucene.document.IntPoint; import org.apache.lucene.document.LongPoint; import org.apache.lucene.index.Term; @@ -33,7 +31,6 @@ import org.apache.lucene.search.TermRangeQuery; import org.elasticsearch.ElasticsearchParseException; import org.elasticsearch.common.ParsingException; -import org.elasticsearch.common.geo.ShapeRelation; import org.elasticsearch.common.lucene.BytesRefs; import org.elasticsearch.index.mapper.DateFieldMapper; import org.elasticsearch.index.mapper.FieldNamesFieldMapper; @@ -64,13 +61,13 @@ protected RangeQueryBuilder doCreateTestQueryBuilder() { switch (randomIntBetween(0, 2)) { case 0: // use mapped integer field for numeric range queries - query = new RangeQueryBuilder(randomBoolean() ? INT_FIELD_NAME : INT_RANGE_FIELD_NAME); + query = new RangeQueryBuilder(INT_FIELD_NAME); query.from(randomIntBetween(1, 100)); query.to(randomIntBetween(101, 200)); break; case 1: // use mapped date field, using date string representation - query = new RangeQueryBuilder(randomBoolean() ? DATE_FIELD_NAME : DATE_RANGE_FIELD_NAME); + query = new RangeQueryBuilder(DATE_FIELD_NAME); query.from(new DateTime(System.currentTimeMillis() - randomIntBetween(0, 1000000), DateTimeZone.UTC).toString()); query.to(new DateTime(System.currentTimeMillis() + randomIntBetween(0, 1000000), DateTimeZone.UTC).toString()); // Create timestamp option only then we have a date mapper, @@ -98,9 +95,6 @@ protected RangeQueryBuilder doCreateTestQueryBuilder() { if (randomBoolean()) { query.to(null); } - if (query.fieldName().equals(INT_RANGE_FIELD_NAME) || query.fieldName().equals(DATE_RANGE_FIELD_NAME)) { - query.relation(RandomPicks.randomFrom(random(), ShapeRelation.values()).getRelationName()); - } return query; } @@ -137,9 +131,7 @@ protected void doAssertLuceneQuery(RangeQueryBuilder queryBuilder, Query query, } else if (getCurrentTypes().length == 0 || (queryBuilder.fieldName().equals(DATE_FIELD_NAME) == false - && queryBuilder.fieldName().equals(INT_FIELD_NAME) == false - && queryBuilder.fieldName().equals(DATE_RANGE_FIELD_NAME) == false - && queryBuilder.fieldName().equals(INT_RANGE_FIELD_NAME) == false)) { + && queryBuilder.fieldName().equals(INT_FIELD_NAME) == false)) { assertThat(query, instanceOf(TermRangeQuery.class)); TermRangeQuery termRangeQuery = (TermRangeQuery) query; assertThat(termRangeQuery.getField(), equalTo(queryBuilder.fieldName())); @@ -215,9 +207,6 @@ protected void doAssertLuceneQuery(RangeQueryBuilder queryBuilder, Query query, maxInt--; } } - } else if (queryBuilder.fieldName().equals(DATE_RANGE_FIELD_NAME) - || queryBuilder.fieldName().equals(INT_RANGE_FIELD_NAME)) { - // todo can't check RangeFieldQuery because its currently package private (this will change) } else { throw new UnsupportedOperationException(); } diff --git a/core/src/test/java/org/elasticsearch/index/query/TermsQueryBuilderTests.java b/core/src/test/java/org/elasticsearch/index/query/TermsQueryBuilderTests.java index 6abff5fbcdec6..79f9af61408b2 100644 --- a/core/src/test/java/org/elasticsearch/index/query/TermsQueryBuilderTests.java +++ b/core/src/test/java/org/elasticsearch/index/query/TermsQueryBuilderTests.java @@ -79,8 +79,7 @@ protected TermsQueryBuilder doCreateTestQueryBuilder() { String fieldName; do { fieldName = getRandomFieldName(); - } while (fieldName.equals(GEO_POINT_FIELD_NAME) || fieldName.equals(GEO_SHAPE_FIELD_NAME) - || fieldName.equals(INT_RANGE_FIELD_NAME) || fieldName.equals(DATE_RANGE_FIELD_NAME)); + } while (fieldName.equals(GEO_POINT_FIELD_NAME) || fieldName.equals(GEO_SHAPE_FIELD_NAME)); Object[] values = new Object[randomInt(5)]; for (int i = 0; i < values.length; i++) { values[i] = getRandomValueForFieldName(fieldName); diff --git a/core/src/test/java/org/elasticsearch/search/query/SearchQueryIT.java b/core/src/test/java/org/elasticsearch/search/query/SearchQueryIT.java index 3c4a0f8823024..fb2fbd337dd2b 100644 --- a/core/src/test/java/org/elasticsearch/search/query/SearchQueryIT.java +++ b/core/src/test/java/org/elasticsearch/search/query/SearchQueryIT.java @@ -1890,19 +1890,4 @@ public void testQueryStringParserCache() throws Exception { } } - public void testRangeQueryRangeFields_24744() throws Exception { - assertAcked(prepareCreate("test") - .addMapping("type1", "int_range", "type=integer_range")); - - client().prepareIndex("test", "type1", "1") - .setSource(jsonBuilder() - .startObject() - .startObject("int_range").field("gte", 10).field("lte", 20).endObject() - .endObject()).get(); - refresh(); - - RangeQueryBuilder range = new RangeQueryBuilder("int_range").relation("intersects").from(Integer.MIN_VALUE).to(Integer.MAX_VALUE); - SearchResponse searchResponse = client().prepareSearch("test").setQuery(range).get(); - assertHitCount(searchResponse, 1); - } } diff --git a/core/src/main/java/org/apache/lucene/queries/BinaryDocValuesRangeQuery.java b/modules/mapper-extras/src/main/java/org/apache/lucene/queries/BinaryDocValuesRangeQuery.java similarity index 100% rename from core/src/main/java/org/apache/lucene/queries/BinaryDocValuesRangeQuery.java rename to modules/mapper-extras/src/main/java/org/apache/lucene/queries/BinaryDocValuesRangeQuery.java diff --git a/core/src/main/java/org/elasticsearch/index/mapper/BinaryRangeUtil.java b/modules/mapper-extras/src/main/java/org/elasticsearch/index/mapper/BinaryRangeUtil.java similarity index 100% rename from core/src/main/java/org/elasticsearch/index/mapper/BinaryRangeUtil.java rename to modules/mapper-extras/src/main/java/org/elasticsearch/index/mapper/BinaryRangeUtil.java diff --git a/modules/mapper-extras/src/main/java/org/elasticsearch/index/mapper/MapperExtrasPlugin.java b/modules/mapper-extras/src/main/java/org/elasticsearch/index/mapper/MapperExtrasPlugin.java index 2b249a5fe6e09..d91d2b28df821 100644 --- a/modules/mapper-extras/src/main/java/org/elasticsearch/index/mapper/MapperExtrasPlugin.java +++ b/modules/mapper-extras/src/main/java/org/elasticsearch/index/mapper/MapperExtrasPlugin.java @@ -33,6 +33,9 @@ public Map getMappers() { Map mappers = new LinkedHashMap<>(); mappers.put(ScaledFloatFieldMapper.CONTENT_TYPE, new ScaledFloatFieldMapper.TypeParser()); mappers.put(TokenCountFieldMapper.CONTENT_TYPE, new TokenCountFieldMapper.TypeParser()); + for (RangeFieldMapper.RangeType type : RangeFieldMapper.RangeType.values()) { + mappers.put(type.typeName(), new RangeFieldMapper.TypeParser(type)); + } return Collections.unmodifiableMap(mappers); } diff --git a/core/src/main/java/org/elasticsearch/index/mapper/RangeFieldMapper.java b/modules/mapper-extras/src/main/java/org/elasticsearch/index/mapper/RangeFieldMapper.java similarity index 98% rename from core/src/main/java/org/elasticsearch/index/mapper/RangeFieldMapper.java rename to modules/mapper-extras/src/main/java/org/elasticsearch/index/mapper/RangeFieldMapper.java index ed77e0a97aa1f..e38d3a14747ae 100644 --- a/core/src/main/java/org/elasticsearch/index/mapper/RangeFieldMapper.java +++ b/modules/mapper-extras/src/main/java/org/elasticsearch/index/mapper/RangeFieldMapper.java @@ -289,21 +289,17 @@ protected DateMathParser dateMathParser() { @Override public Query termQuery(Object value, QueryShardContext context) { - Query query = rangeQuery(value, value, true, true, ShapeRelation.INTERSECTS, context); + Query query = rangeQuery(value, value, true, true, ShapeRelation.INTERSECTS, null, null, context); if (boost() != 1f) { query = new BoostQuery(query, boost()); } return query; } - public Query rangeQuery(Object lowerTerm, Object upperTerm, boolean includeLower, boolean includeUpper, - ShapeRelation relation, QueryShardContext context) { - failIfNotIndexed(); - return rangeQuery(lowerTerm, upperTerm, includeLower, includeUpper, relation, null, dateMathParser, context); - } - + @Override public Query rangeQuery(Object lowerTerm, Object upperTerm, boolean includeLower, boolean includeUpper, ShapeRelation relation, DateTimeZone timeZone, DateMathParser parser, QueryShardContext context) { + failIfNotIndexed(); return rangeType.rangeQuery(name(), hasDocValues(), lowerTerm, upperTerm, includeLower, includeUpper, relation, timeZone, parser, context); } @@ -518,9 +514,6 @@ public Query intersectsQuery(String field, Object from, Object to, boolean inclu return InetAddressRange.newIntersectsQuery(field, includeLower ? lower : nextUp(lower), includeUpper ? upper : nextDown(upper)); } - public String toString(InetAddress address) { - return InetAddresses.toAddrString(address); - } }, DATE("date_range", NumberType.LONG) { @Override diff --git a/core/src/test/java/org/apache/lucene/queries/BaseRandomBinaryDocValuesRangeQueryTestCase.java b/modules/mapper-extras/src/test/java/org/apache/lucene/queries/BaseRandomBinaryDocValuesRangeQueryTestCase.java similarity index 92% rename from core/src/test/java/org/apache/lucene/queries/BaseRandomBinaryDocValuesRangeQueryTestCase.java rename to modules/mapper-extras/src/test/java/org/apache/lucene/queries/BaseRandomBinaryDocValuesRangeQueryTestCase.java index b83dac78d070e..fcc9f67229f87 100644 --- a/core/src/test/java/org/apache/lucene/queries/BaseRandomBinaryDocValuesRangeQueryTestCase.java +++ b/modules/mapper-extras/src/test/java/org/apache/lucene/queries/BaseRandomBinaryDocValuesRangeQueryTestCase.java @@ -49,7 +49,7 @@ public void testRandomBig() throws Exception { @Override protected final Field newRangeField(Range box) { - AbstractRange testRange = (AbstractRange) box; + AbstractRange testRange = (AbstractRange) box; RangeFieldMapper.Range range = new RangeFieldMapper.Range(rangeType(), testRange.getMin(), testRange.getMax(), true , true); try { BytesRef encodeRange = rangeType().encodeRanges(Collections.singleton(range)); @@ -61,25 +61,25 @@ protected final Field newRangeField(Range box) { @Override protected final Query newIntersectsQuery(Range box) { - AbstractRange testRange = (AbstractRange) box; + AbstractRange testRange = (AbstractRange) box; return rangeType().dvRangeQuery(fieldName(), INTERSECTS, testRange.getMin(), testRange.getMax(), true, true); } @Override protected final Query newContainsQuery(Range box) { - AbstractRange testRange = (AbstractRange) box; + AbstractRange testRange = (AbstractRange) box; return rangeType().dvRangeQuery(fieldName(), CONTAINS, testRange.getMin(), testRange.getMax(), true, true); } @Override protected final Query newWithinQuery(Range box) { - AbstractRange testRange = (AbstractRange) box; + AbstractRange testRange = (AbstractRange) box; return rangeType().dvRangeQuery(fieldName(), WITHIN, testRange.getMin(), testRange.getMax(), true, true); } @Override protected final Query newCrossesQuery(Range box) { - AbstractRange testRange = (AbstractRange) box; + AbstractRange testRange = (AbstractRange) box; return rangeType().dvRangeQuery(fieldName(), CROSSES, testRange.getMin(), testRange.getMax(), true, true); } @@ -116,7 +116,7 @@ protected final Object getMax(int dim) { @Override protected final boolean isEqual(Range o) { - AbstractRange other = (AbstractRange) o; + AbstractRange other = (AbstractRange) o; return Objects.equals(getMin(), other.getMin()) && Objects.equals(getMax(), other.getMax()); } diff --git a/core/src/test/java/org/apache/lucene/queries/BinaryDocValuesRangeQueryTests.java b/modules/mapper-extras/src/test/java/org/apache/lucene/queries/BinaryDocValuesRangeQueryTests.java similarity index 100% rename from core/src/test/java/org/apache/lucene/queries/BinaryDocValuesRangeQueryTests.java rename to modules/mapper-extras/src/test/java/org/apache/lucene/queries/BinaryDocValuesRangeQueryTests.java diff --git a/core/src/test/java/org/apache/lucene/queries/DoubleRandomBinaryDocValuesRangeQueryTests.java b/modules/mapper-extras/src/test/java/org/apache/lucene/queries/DoubleRandomBinaryDocValuesRangeQueryTests.java similarity index 96% rename from core/src/test/java/org/apache/lucene/queries/DoubleRandomBinaryDocValuesRangeQueryTests.java rename to modules/mapper-extras/src/test/java/org/apache/lucene/queries/DoubleRandomBinaryDocValuesRangeQueryTests.java index aa15a80319510..984b1d72ef843 100644 --- a/core/src/test/java/org/apache/lucene/queries/DoubleRandomBinaryDocValuesRangeQueryTests.java +++ b/modules/mapper-extras/src/test/java/org/apache/lucene/queries/DoubleRandomBinaryDocValuesRangeQueryTests.java @@ -56,7 +56,7 @@ private double nextDoubleInternal() { } } - private static class DoubleTestRange extends AbstractRange { + private static class DoubleTestRange extends AbstractRange { double min; double max; @@ -66,7 +66,7 @@ private static class DoubleTestRange extends AbstractRange { } @Override - public Object getMin() { + public Double getMin() { return min; } @@ -82,7 +82,7 @@ protected void setMin(int dim, Object val) { } @Override - public Object getMax() { + public Double getMax() { return max; } diff --git a/core/src/test/java/org/apache/lucene/queries/FloatRandomBinaryDocValuesRangeQueryTests.java b/modules/mapper-extras/src/test/java/org/apache/lucene/queries/FloatRandomBinaryDocValuesRangeQueryTests.java similarity index 96% rename from core/src/test/java/org/apache/lucene/queries/FloatRandomBinaryDocValuesRangeQueryTests.java rename to modules/mapper-extras/src/test/java/org/apache/lucene/queries/FloatRandomBinaryDocValuesRangeQueryTests.java index 8a04a50448fed..a7f877392cf43 100644 --- a/core/src/test/java/org/apache/lucene/queries/FloatRandomBinaryDocValuesRangeQueryTests.java +++ b/modules/mapper-extras/src/test/java/org/apache/lucene/queries/FloatRandomBinaryDocValuesRangeQueryTests.java @@ -56,7 +56,7 @@ private float nextFloatInternal() { } } - private static class FloatTestRange extends AbstractRange { + private static class FloatTestRange extends AbstractRange { float min; float max; @@ -66,7 +66,7 @@ private static class FloatTestRange extends AbstractRange { } @Override - public Object getMin() { + public Float getMin() { return min; } @@ -82,7 +82,7 @@ protected void setMin(int dim, Object val) { } @Override - public Object getMax() { + public Float getMax() { return max; } diff --git a/core/src/test/java/org/apache/lucene/queries/InetAddressRandomBinaryDocValuesRangeQueryTests.java b/modules/mapper-extras/src/test/java/org/apache/lucene/queries/InetAddressRandomBinaryDocValuesRangeQueryTests.java similarity index 96% rename from core/src/test/java/org/apache/lucene/queries/InetAddressRandomBinaryDocValuesRangeQueryTests.java rename to modules/mapper-extras/src/test/java/org/apache/lucene/queries/InetAddressRandomBinaryDocValuesRangeQueryTests.java index 1592e89d174eb..2def2702d38b3 100644 --- a/core/src/test/java/org/apache/lucene/queries/InetAddressRandomBinaryDocValuesRangeQueryTests.java +++ b/modules/mapper-extras/src/test/java/org/apache/lucene/queries/InetAddressRandomBinaryDocValuesRangeQueryTests.java @@ -67,7 +67,7 @@ private InetAddress nextInetaddress() throws UnknownHostException { } } - private static class IpRange extends AbstractRange { + private static class IpRange extends AbstractRange { InetAddress minAddress; InetAddress maxAddress; byte[] min; @@ -81,7 +81,7 @@ private static class IpRange extends AbstractRange { } @Override - public Object getMin() { + public InetAddress getMin() { return minAddress; } @@ -101,7 +101,7 @@ protected void setMin(int dim, Object val) { } @Override - public Object getMax() { + public InetAddress getMax() { return maxAddress; } diff --git a/core/src/test/java/org/apache/lucene/queries/IntegerRandomBinaryDocValuesRangeQueryTests.java b/modules/mapper-extras/src/test/java/org/apache/lucene/queries/IntegerRandomBinaryDocValuesRangeQueryTests.java similarity index 96% rename from core/src/test/java/org/apache/lucene/queries/IntegerRandomBinaryDocValuesRangeQueryTests.java rename to modules/mapper-extras/src/test/java/org/apache/lucene/queries/IntegerRandomBinaryDocValuesRangeQueryTests.java index 6fe59b8827312..1d04cdbaaca86 100644 --- a/core/src/test/java/org/apache/lucene/queries/IntegerRandomBinaryDocValuesRangeQueryTests.java +++ b/modules/mapper-extras/src/test/java/org/apache/lucene/queries/IntegerRandomBinaryDocValuesRangeQueryTests.java @@ -64,7 +64,7 @@ private int nextIntInternal() { } } - private static class IntTestRange extends AbstractRange { + private static class IntTestRange extends AbstractRange { int min; int max; @@ -74,7 +74,7 @@ private static class IntTestRange extends AbstractRange { } @Override - public Object getMin() { + public Integer getMin() { return min; } @@ -90,7 +90,7 @@ protected void setMin(int dim, Object val) { } @Override - public Object getMax() { + public Integer getMax() { return max; } diff --git a/core/src/test/java/org/apache/lucene/queries/LongRandomBinaryDocValuesRangeQueryTests.java b/modules/mapper-extras/src/test/java/org/apache/lucene/queries/LongRandomBinaryDocValuesRangeQueryTests.java similarity index 96% rename from core/src/test/java/org/apache/lucene/queries/LongRandomBinaryDocValuesRangeQueryTests.java rename to modules/mapper-extras/src/test/java/org/apache/lucene/queries/LongRandomBinaryDocValuesRangeQueryTests.java index 139cb3f0b1282..e506c2c269028 100644 --- a/core/src/test/java/org/apache/lucene/queries/LongRandomBinaryDocValuesRangeQueryTests.java +++ b/modules/mapper-extras/src/test/java/org/apache/lucene/queries/LongRandomBinaryDocValuesRangeQueryTests.java @@ -64,7 +64,7 @@ private long nextLongInternal() { } } - private static class LongTestRange extends AbstractRange { + private static class LongTestRange extends AbstractRange { long min; long max; @@ -74,7 +74,7 @@ private static class LongTestRange extends AbstractRange { } @Override - public Object getMin() { + public Long getMin() { return min; } @@ -90,7 +90,7 @@ protected void setMin(int dim, Object val) { } @Override - public Object getMax() { + public Long getMax() { return max; } diff --git a/core/src/test/java/org/elasticsearch/index/mapper/BinaryRangeUtilTests.java b/modules/mapper-extras/src/test/java/org/elasticsearch/index/mapper/BinaryRangeUtilTests.java similarity index 100% rename from core/src/test/java/org/elasticsearch/index/mapper/BinaryRangeUtilTests.java rename to modules/mapper-extras/src/test/java/org/elasticsearch/index/mapper/BinaryRangeUtilTests.java diff --git a/modules/mapper-extras/src/test/java/org/elasticsearch/index/mapper/MapperExtrasClientYamlTestSuiteIT.java b/modules/mapper-extras/src/test/java/org/elasticsearch/index/mapper/MapperExtrasClientYamlTestSuiteIT.java new file mode 100644 index 0000000000000..e2f10791739f8 --- /dev/null +++ b/modules/mapper-extras/src/test/java/org/elasticsearch/index/mapper/MapperExtrasClientYamlTestSuiteIT.java @@ -0,0 +1,40 @@ +/* + * 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.mapper; + +import com.carrotsearch.randomizedtesting.annotations.Name; +import com.carrotsearch.randomizedtesting.annotations.ParametersFactory; + +import org.elasticsearch.test.rest.yaml.ClientYamlTestCandidate; +import org.elasticsearch.test.rest.yaml.ESClientYamlSuiteTestCase; + +/** Runs yaml rest tests */ +public class MapperExtrasClientYamlTestSuiteIT extends ESClientYamlSuiteTestCase { + + public MapperExtrasClientYamlTestSuiteIT(@Name("yaml") ClientYamlTestCandidate testCandidate) { + super(testCandidate); + } + + @ParametersFactory + public static Iterable parameters() throws Exception { + return ESClientYamlSuiteTestCase.createParameters(); + } +} + diff --git a/core/src/test/java/org/elasticsearch/index/mapper/RangeFieldMapperTests.java b/modules/mapper-extras/src/test/java/org/elasticsearch/index/mapper/RangeFieldMapperTests.java similarity index 98% rename from core/src/test/java/org/elasticsearch/index/mapper/RangeFieldMapperTests.java rename to modules/mapper-extras/src/test/java/org/elasticsearch/index/mapper/RangeFieldMapperTests.java index 7bae878b92459..0742aeadcb58a 100644 --- a/core/src/test/java/org/elasticsearch/index/mapper/RangeFieldMapperTests.java +++ b/modules/mapper-extras/src/test/java/org/elasticsearch/index/mapper/RangeFieldMapperTests.java @@ -27,10 +27,13 @@ import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentFactory; import org.elasticsearch.common.xcontent.XContentType; +import org.elasticsearch.plugins.Plugin; +import org.elasticsearch.test.InternalSettingsPlugin; import java.io.IOException; import java.net.InetAddress; import java.util.Arrays; +import java.util.Collection; import java.util.HashSet; import java.util.Locale; @@ -42,6 +45,12 @@ import static org.hamcrest.Matchers.containsString; public class RangeFieldMapperTests extends AbstractNumericFieldMapperTestCase { + + @Override + protected Collection> getPlugins() { + return pluginList(InternalSettingsPlugin.class, MapperExtrasPlugin.class); + } + private static String FROM_DATE = "2016-10-31"; private static String TO_DATE = "2016-11-01 20:00:00"; private static String FROM_IP = "::ffff:c0a8:107"; diff --git a/core/src/test/java/org/elasticsearch/index/mapper/RangeFieldTypeTests.java b/modules/mapper-extras/src/test/java/org/elasticsearch/index/mapper/RangeFieldTypeTests.java similarity index 99% rename from core/src/test/java/org/elasticsearch/index/mapper/RangeFieldTypeTests.java rename to modules/mapper-extras/src/test/java/org/elasticsearch/index/mapper/RangeFieldTypeTests.java index 328e61c233091..810563555969a 100644 --- a/core/src/test/java/org/elasticsearch/index/mapper/RangeFieldTypeTests.java +++ b/modules/mapper-extras/src/test/java/org/elasticsearch/index/mapper/RangeFieldTypeTests.java @@ -95,7 +95,7 @@ public void testRangeQuery() throws Exception { Object to = nextTo(from); assertEquals(getExpectedRangeQuery(relation, from, to, includeLower, includeUpper), - ft.rangeQuery(from, to, includeLower, includeUpper, relation, context)); + ft.rangeQuery(from, to, includeLower, includeUpper, relation, null, null, context)); } private Query getExpectedRangeQuery(ShapeRelation relation, Object from, Object to, boolean includeLower, boolean includeUpper) { diff --git a/modules/mapper-extras/src/test/resources/rest-api-spec/test/range/.10_basic.yml.swp b/modules/mapper-extras/src/test/resources/rest-api-spec/test/range/.10_basic.yml.swp new file mode 100644 index 0000000000000000000000000000000000000000..290a6ca91b9ccda25156677e81986b8ea81fe877 GIT binary patch literal 20480 zcmeI&3v3g09Ki8EA}<9&@j(>BQP4!CYfFbfRU%4M6e7U^%0ukh+jiQu_3kQ+1w};@ zH5e2l7y}9-F(E$Cfe=YRWrX-Z!B_AZF(w)@5h98B!tcNBx^}edC~G_Qf5|6Z?{5G5 z-S2<>-~H~c+C6>ZWNmasrC=H$#E|8iZfW@5As(D2#O={YENm~3OWK_ln0nMU?ua+h z-imi88+2J_z@>-$mTd$q-ERi!T=kJ)ETmhmdVe&kn@)YcZThYFdbV!aE>pK6F*Cpl z{AD}+QNw9P^?)m}&>ybVT^{$`YQJR!DjMoT?FFHhsSNxdGZ3?DoMZY4??{hZ?*1^x zP;KBD{K(a$GN3Y`GN3Y`GN3Y`GN3Y`GN3Z>zsZ0d?Jn+NZ%<0@@yg_9w>F>Mli#06 zey(b>{N&{K^OK+6WCJbjBxkD+l>wCjl>wCjl>wCjl>wCjl>wCjl>wCjl>wE3GGxFX z6hb}_+%9hb@ch4}{y)-Rh=ce7&De-%&-DyI+jTM-O8*mZ+>?g#R*nnlY z9R_q%;U?UGakv#1=e{Wq1JBVRpt_7N6LOhXkWVI1D-BgC6ni|6n(mS7;xz~SCP{EA<&AKzjh-os|B!wTGn zxtM|LaVdu5Y<%5Ih_CPocA*Jt@C0UK7G`29#$YsD7>eyZh1iBQSdFLf2nL`(4)tLF z@FTuJHT;->t8p2e*u>47jaY%@Scb*8AB_lOCa!}I-5~HAH-&z}XK2RjxEl)*LmjGc z6)N!u$Jp;Uf`j-BpJF%U@wW}fJ8AJL@fL|sXqr#bY zjSE{>Nv@-5)sbKWi!?_~DB`#0n(}oLhZdhxYwHf5Ryjg*gyMgV(iUp6iNs_CeVRA* z&2EV5KDHi6&0+KUe4i#?Qc2EB%;8H$m>meglM2CmOb8=W8!S->$7aEELLoS=k%`w5 ziT4So(uZmmCq4aCpfZL8p%{lla{ieQ=QnbggdwTgI1y z!Y$_zQ&7O=9c4Nea#04F+?y`pSd%-55)L;V38K?SoQa9SpzWX|&lqhchrDEy*D4Mp znjAYsn^pMQx=>!?W|>->3HoilorcmD=Wi+!s}8l>So#Win@hjC&axL7SKoOXOFN5X zYb$MW-lj5-kZi4Gu5oOGj;I;ot##YbEl1m>)B~Bb*$oOkIBfA7D3jVl&3!3TPODbI=EmQO_@h1ruT1iaD5u>re>?&cx@` z@%yj`JMaotVJW6#8YbgPjKI0*i@ntId+;H4;U&C?=dm1>@ZxNog?^Cr|9!X@K?E=h zld+fjeh-@P8rEYahGQ6dq6fO6iKW*F1BDj=3q9ea4ozTih*dRhTnm$co|RQ zAvD5?5x4}y&u#tMc3Cr;$9>pRYq+b68A7L-v!B)6XfzvSn zeepN7`d>JVAMi2WLKAABV-BX^a$JnTkahg~XvSu&#p962);i>xwB%HTdOB^qORwl1 zBi)|SPWM=++v7-8)~z$W@ggeqvyyRja*jW$B35*GCPg6OH*}@C&)Tu3_ z3p`^-R(LKQQ{k@gw)BBK54O&(l(V}=Io?@&P}VExmJ5s%>;-u?EMMtfa8DHHIy+BJ znWhs5sYyH6$f7mN5t}OXF!C`OWl%fxM!Ssvc^q*Xpyx&+z zwB;Pk3W>M816PM4F3KR4bIT>X7mzcC65a~vKn$IJCtyN+6e#*&lU`eQ`LU*eV9Pnw z6cBECN1BcVoEm6k{oj-N`ANw7zvcb?SE=> public static final String STRING_FIELD_NAME = "mapped_string"; protected static final String STRING_FIELD_NAME_2 = "mapped_string_2"; protected static final String INT_FIELD_NAME = "mapped_int"; - protected static final String INT_RANGE_FIELD_NAME = "mapped_int_range"; protected static final String DOUBLE_FIELD_NAME = "mapped_double"; protected static final String BOOLEAN_FIELD_NAME = "mapped_boolean"; protected static final String DATE_FIELD_NAME = "mapped_date"; - protected static final String DATE_RANGE_FIELD_NAME = "mapped_date_range"; protected static final String OBJECT_FIELD_NAME = "mapped_object"; protected static final String GEO_POINT_FIELD_NAME = "mapped_geo_point"; protected static final String GEO_SHAPE_FIELD_NAME = "mapped_geo_shape"; - protected static final String[] MAPPED_FIELD_NAMES = new String[]{STRING_FIELD_NAME, INT_FIELD_NAME, INT_RANGE_FIELD_NAME, - DOUBLE_FIELD_NAME, BOOLEAN_FIELD_NAME, DATE_FIELD_NAME, DATE_RANGE_FIELD_NAME, OBJECT_FIELD_NAME, GEO_POINT_FIELD_NAME, + protected static final String[] MAPPED_FIELD_NAMES = new String[]{STRING_FIELD_NAME, INT_FIELD_NAME, + DOUBLE_FIELD_NAME, BOOLEAN_FIELD_NAME, DATE_FIELD_NAME, OBJECT_FIELD_NAME, GEO_POINT_FIELD_NAME, GEO_SHAPE_FIELD_NAME}; - private static final String[] MAPPED_LEAF_FIELD_NAMES = new String[]{STRING_FIELD_NAME, INT_FIELD_NAME, INT_RANGE_FIELD_NAME, - DOUBLE_FIELD_NAME, BOOLEAN_FIELD_NAME, DATE_FIELD_NAME, DATE_RANGE_FIELD_NAME, GEO_POINT_FIELD_NAME, }; + private static final String[] MAPPED_LEAF_FIELD_NAMES = new String[]{STRING_FIELD_NAME, INT_FIELD_NAME, + DOUBLE_FIELD_NAME, BOOLEAN_FIELD_NAME, DATE_FIELD_NAME, GEO_POINT_FIELD_NAME, }; private static final int NUMBER_OF_TESTQUERIES = 20; protected static Version indexVersionCreated; @@ -1078,11 +1076,9 @@ public void onRemoval(ShardId shardId, Accountable accountable) { STRING_FIELD_NAME, "type=text", STRING_FIELD_NAME_2, "type=keyword", INT_FIELD_NAME, "type=integer", - INT_RANGE_FIELD_NAME, "type=integer_range", DOUBLE_FIELD_NAME, "type=double", BOOLEAN_FIELD_NAME, "type=boolean", DATE_FIELD_NAME, "type=date", - DATE_RANGE_FIELD_NAME, "type=date_range", OBJECT_FIELD_NAME, "type=object", GEO_POINT_FIELD_NAME, "type=geo_point", GEO_SHAPE_FIELD_NAME, "type=geo_shape" From fa62a8729ef905948e991e63bd8ad9c67da5e6d7 Mon Sep 17 00:00:00 2001 From: Adrien Grand Date: Mon, 11 Sep 2017 16:08:34 +0200 Subject: [PATCH 3/8] Remove unused lines in the qa module. --- qa/integration-bwc/build.gradle | 7 ------- 1 file changed, 7 deletions(-) diff --git a/qa/integration-bwc/build.gradle b/qa/integration-bwc/build.gradle index 4469096c6b1aa..089e64f79873e 100644 --- a/qa/integration-bwc/build.gradle +++ b/qa/integration-bwc/build.gradle @@ -23,13 +23,6 @@ import org.elasticsearch.gradle.VersionProperties apply plugin: 'elasticsearch.standalone-test' -// This is a top level task which we will add dependencies to below. -// It is a single task that can be used to backcompat tests against all versions. -task bwcTest { - description = 'Runs backwards compatibility tests.' - group = 'verification' -} - dependencies { testCompile project(path: ':modules:mapper-extras', configuration: 'runtime') } From ca5c32ea8d313d64a2f92f4e3a3662249254c72d Mon Sep 17 00:00:00 2001 From: Adrien Grand Date: Tue, 12 Sep 2017 09:57:32 +0200 Subject: [PATCH 4/8] iter --- .../rest-api-spec/test/range/.10_basic.yml.swp | Bin 20480 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 modules/mapper-extras/src/test/resources/rest-api-spec/test/range/.10_basic.yml.swp diff --git a/modules/mapper-extras/src/test/resources/rest-api-spec/test/range/.10_basic.yml.swp b/modules/mapper-extras/src/test/resources/rest-api-spec/test/range/.10_basic.yml.swp deleted file mode 100644 index 290a6ca91b9ccda25156677e81986b8ea81fe877..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20480 zcmeI&3v3g09Ki8EA}<9&@j(>BQP4!CYfFbfRU%4M6e7U^%0ukh+jiQu_3kQ+1w};@ zH5e2l7y}9-F(E$Cfe=YRWrX-Z!B_AZF(w)@5h98B!tcNBx^}edC~G_Qf5|6Z?{5G5 z-S2<>-~H~c+C6>ZWNmasrC=H$#E|8iZfW@5As(D2#O={YENm~3OWK_ln0nMU?ua+h z-imi88+2J_z@>-$mTd$q-ERi!T=kJ)ETmhmdVe&kn@)YcZThYFdbV!aE>pK6F*Cpl z{AD}+QNw9P^?)m}&>ybVT^{$`YQJR!DjMoT?FFHhsSNxdGZ3?DoMZY4??{hZ?*1^x zP;KBD{K(a$GN3Y`GN3Y`GN3Y`GN3Y`GN3Z>zsZ0d?Jn+NZ%<0@@yg_9w>F>Mli#06 zey(b>{N&{K^OK+6WCJbjBxkD+l>wCjl>wCjl>wCjl>wCjl>wCjl>wCjl>wE3GGxFX z6hb}_+%9hb@ch4}{y)-Rh=ce7&De-%&-DyI+jTM-O8*mZ+>?g#R*nnlY z9R_q%;U?UGakv#1=e{Wq1JBVRpt_7N6LOhXkWVI1D-BgC6ni|6n(mS7;xz~SCP{EA<&AKzjh-os|B!wTGn zxtM|LaVdu5Y<%5Ih_CPocA*Jt@C0UK7G`29#$YsD7>eyZh1iBQSdFLf2nL`(4)tLF z@FTuJHT;->t8p2e*u>47jaY%@Scb*8AB_lOCa!}I-5~HAH-&z}XK2RjxEl)*LmjGc z6)N!u$Jp;Uf`j-BpJF%U@wW}fJ8AJL@fL|sXqr#bY zjSE{>Nv@-5)sbKWi!?_~DB`#0n(}oLhZdhxYwHf5Ryjg*gyMgV(iUp6iNs_CeVRA* z&2EV5KDHi6&0+KUe4i#?Qc2EB%;8H$m>meglM2CmOb8=W8!S->$7aEELLoS=k%`w5 ziT4So(uZmmCq4aCpfZL8p%{lla{ieQ=QnbggdwTgI1y z!Y$_zQ&7O=9c4Nea#04F+?y`pSd%-55)L;V38K?SoQa9SpzWX|&lqhchrDEy*D4Mp znjAYsn^pMQx=>!?W|>->3HoilorcmD=Wi+!s}8l>So#Win@hjC&axL7SKoOXOFN5X zYb$MW-lj5-kZi4Gu5oOGj;I;ot##YbEl1m>)B~Bb*$oOkIBfA7D3jVl&3!3TPODbI=EmQO_@h1ruT1iaD5u>re>?&cx@` z@%yj`JMaotVJW6#8YbgPjKI0*i@ntId+;H4;U&C?=dm1>@ZxNog?^Cr|9!X@K?E=h zld+fjeh-@P8rEYahGQ6dq6fO6iKW*F1BDj=3q9ea4ozTih*dRhTnm$co|RQ zAvD5?5x4}y&u#tMc3Cr;$9>pRYq+b68A7L-v!B)6XfzvSn zeepN7`d>JVAMi2WLKAABV-BX^a$JnTkahg~XvSu&#p962);i>xwB%HTdOB^qORwl1 zBi)|SPWM=++v7-8)~z$W@ggeqvyyRja*jW$B35*GCPg6OH*}@C&)Tu3_ z3p`^-R(LKQQ{k@gw)BBK54O&(l(V}=Io?@&P}VExmJ5s%>;-u?EMMtfa8DHHIy+BJ znWhs5sYyH6$f7mN5t}OXF!C`OWl%fxM!Ssvc^q*Xpyx&+z zwB;Pk3W>M816PM4F3KR4bIT>X7mzcC65a~vKn$IJCtyN+6e#*&lU`eQ`LU*eV9Pnw z6cBECN1BcVoEm6k{oj-N`ANw7zvcb?SE= Date: Tue, 12 Sep 2017 10:09:07 +0200 Subject: [PATCH 5/8] Remove qa module. --- .../index/mapper}/BWCTemplateTests.java | 10 +++---- .../index/mapper}/filebeat-5.0.template.json | 0 .../mapper}/metricbeat-5.0.template.json | 0 .../mapper}/packetbeat-5.0.template.json | 0 .../mapper}/winlogbeat-5.0.template.json | 0 qa/integration-bwc/build.gradle | 28 ------------------- 6 files changed, 5 insertions(+), 33 deletions(-) rename {qa/integration-bwc/src/test/java/org/elasticsearch/action/admin/indices/template => modules/mapper-extras/src/test/java/org/elasticsearch/index/mapper}/BWCTemplateTests.java (88%) rename {qa/integration-bwc/src/test/resources/org/elasticsearch/action/admin/indices/template => modules/mapper-extras/src/test/resources/org/elasticsearch/index/mapper}/filebeat-5.0.template.json (100%) rename {qa/integration-bwc/src/test/resources/org/elasticsearch/action/admin/indices/template => modules/mapper-extras/src/test/resources/org/elasticsearch/index/mapper}/metricbeat-5.0.template.json (100%) rename {qa/integration-bwc/src/test/resources/org/elasticsearch/action/admin/indices/template => modules/mapper-extras/src/test/resources/org/elasticsearch/index/mapper}/packetbeat-5.0.template.json (100%) rename {qa/integration-bwc/src/test/resources/org/elasticsearch/action/admin/indices/template => modules/mapper-extras/src/test/resources/org/elasticsearch/index/mapper}/winlogbeat-5.0.template.json (100%) delete mode 100644 qa/integration-bwc/build.gradle diff --git a/qa/integration-bwc/src/test/java/org/elasticsearch/action/admin/indices/template/BWCTemplateTests.java b/modules/mapper-extras/src/test/java/org/elasticsearch/index/mapper/BWCTemplateTests.java similarity index 88% rename from qa/integration-bwc/src/test/java/org/elasticsearch/action/admin/indices/template/BWCTemplateTests.java rename to modules/mapper-extras/src/test/java/org/elasticsearch/index/mapper/BWCTemplateTests.java index a161624ef29fd..1d9671218c456 100644 --- a/qa/integration-bwc/src/test/java/org/elasticsearch/action/admin/indices/template/BWCTemplateTests.java +++ b/modules/mapper-extras/src/test/java/org/elasticsearch/index/mapper/BWCTemplateTests.java @@ -17,7 +17,7 @@ * under the License. */ -package org.elasticsearch.action.admin.indices.template; +package org.elasticsearch.index.mapper; import org.elasticsearch.common.xcontent.XContentType; import org.elasticsearch.index.mapper.MapperExtrasPlugin; @@ -39,10 +39,10 @@ protected Collection> getPlugins() { } public void testBeatsTemplatesBWC() throws Exception { - byte[] metricBeat = copyToBytesFromClasspath("/org/elasticsearch/action/admin/indices/template/metricbeat-5.0.template.json"); - byte[] packetBeat = copyToBytesFromClasspath("/org/elasticsearch/action/admin/indices/template/packetbeat-5.0.template.json"); - byte[] fileBeat = copyToBytesFromClasspath("/org/elasticsearch/action/admin/indices/template/filebeat-5.0.template.json"); - byte[] winLogBeat = copyToBytesFromClasspath("/org/elasticsearch/action/admin/indices/template/winlogbeat-5.0.template.json"); + byte[] metricBeat = copyToBytesFromClasspath("/org/elasticsearch/index/mapper/metricbeat-5.0.template.json"); + byte[] packetBeat = copyToBytesFromClasspath("/org/elasticsearch/index/mapper/packetbeat-5.0.template.json"); + byte[] fileBeat = copyToBytesFromClasspath("/org/elasticsearch/index/mapper/filebeat-5.0.template.json"); + byte[] winLogBeat = copyToBytesFromClasspath("/org/elasticsearch/index/mapper/winlogbeat-5.0.template.json"); client().admin().indices().preparePutTemplate("metricbeat").setSource(metricBeat, XContentType.JSON).get(); client().admin().indices().preparePutTemplate("packetbeat").setSource(packetBeat, XContentType.JSON).get(); client().admin().indices().preparePutTemplate("filebeat").setSource(fileBeat, XContentType.JSON).get(); diff --git a/qa/integration-bwc/src/test/resources/org/elasticsearch/action/admin/indices/template/filebeat-5.0.template.json b/modules/mapper-extras/src/test/resources/org/elasticsearch/index/mapper/filebeat-5.0.template.json similarity index 100% rename from qa/integration-bwc/src/test/resources/org/elasticsearch/action/admin/indices/template/filebeat-5.0.template.json rename to modules/mapper-extras/src/test/resources/org/elasticsearch/index/mapper/filebeat-5.0.template.json diff --git a/qa/integration-bwc/src/test/resources/org/elasticsearch/action/admin/indices/template/metricbeat-5.0.template.json b/modules/mapper-extras/src/test/resources/org/elasticsearch/index/mapper/metricbeat-5.0.template.json similarity index 100% rename from qa/integration-bwc/src/test/resources/org/elasticsearch/action/admin/indices/template/metricbeat-5.0.template.json rename to modules/mapper-extras/src/test/resources/org/elasticsearch/index/mapper/metricbeat-5.0.template.json diff --git a/qa/integration-bwc/src/test/resources/org/elasticsearch/action/admin/indices/template/packetbeat-5.0.template.json b/modules/mapper-extras/src/test/resources/org/elasticsearch/index/mapper/packetbeat-5.0.template.json similarity index 100% rename from qa/integration-bwc/src/test/resources/org/elasticsearch/action/admin/indices/template/packetbeat-5.0.template.json rename to modules/mapper-extras/src/test/resources/org/elasticsearch/index/mapper/packetbeat-5.0.template.json diff --git a/qa/integration-bwc/src/test/resources/org/elasticsearch/action/admin/indices/template/winlogbeat-5.0.template.json b/modules/mapper-extras/src/test/resources/org/elasticsearch/index/mapper/winlogbeat-5.0.template.json similarity index 100% rename from qa/integration-bwc/src/test/resources/org/elasticsearch/action/admin/indices/template/winlogbeat-5.0.template.json rename to modules/mapper-extras/src/test/resources/org/elasticsearch/index/mapper/winlogbeat-5.0.template.json diff --git a/qa/integration-bwc/build.gradle b/qa/integration-bwc/build.gradle deleted file mode 100644 index 089e64f79873e..0000000000000 --- a/qa/integration-bwc/build.gradle +++ /dev/null @@ -1,28 +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. - */ - -import org.elasticsearch.gradle.test.RestIntegTestTask -import org.elasticsearch.gradle.Version -import org.elasticsearch.gradle.VersionProperties - -apply plugin: 'elasticsearch.standalone-test' - -dependencies { - testCompile project(path: ':modules:mapper-extras', configuration: 'runtime') -} From 99634f925a1f7bdcf34de5d7c5c96e81b65d01a5 Mon Sep 17 00:00:00 2001 From: Adrien Grand Date: Wed, 13 Sep 2017 10:05:41 +0200 Subject: [PATCH 6/8] iter --- modules/percolator/build.gradle | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/modules/percolator/build.gradle b/modules/percolator/build.gradle index eb782995427fd..36b93fd4d866f 100644 --- a/modules/percolator/build.gradle +++ b/modules/percolator/build.gradle @@ -28,5 +28,13 @@ dependencies { compile project(path: ':modules:mapper-extras', configuration: 'runtime') testCompile project(path: ':modules:parent-join', configuration: 'runtime') } + +dependencyLicenses { + // Don't check the client's license. We know it. + dependencies = project.configurations.runtime.fileCollection { + it.group.startsWith('org.elasticsearch') == false + } - project.configurations.provided +} + compileJava.options.compilerArgs << "-Xlint:-deprecation,-rawtypes" compileTestJava.options.compilerArgs << "-Xlint:-deprecation,-rawtypes" From 2ef7d56b1df56e30134645a20b706a02f83a3665 Mon Sep 17 00:00:00 2001 From: Jason Tedor Date: Wed, 13 Sep 2017 08:23:14 -0400 Subject: [PATCH 7/8] Install lang-painless module --- modules/mapper-extras/build.gradle | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/modules/mapper-extras/build.gradle b/modules/mapper-extras/build.gradle index 7831de3a68e94..a9ab391f6b077 100644 --- a/modules/mapper-extras/build.gradle +++ b/modules/mapper-extras/build.gradle @@ -21,3 +21,7 @@ esplugin { description 'Adds advanced field mappers' classname 'org.elasticsearch.index.mapper.MapperExtrasPlugin' } + +integTestCluster { + module project.project(':modules:lang-painless') +} From 1ef5488b7b8e763458cc14f1a7b79391ccecfcb3 Mon Sep 17 00:00:00 2001 From: Jason Tedor Date: Wed, 13 Sep 2017 10:24:32 -0400 Subject: [PATCH 8/8] Reverse modules --- modules/lang-painless/build.gradle | 4 ++++ modules/mapper-extras/build.gradle | 4 ---- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/lang-painless/build.gradle b/modules/lang-painless/build.gradle index 87e3d265f4292..dddc98ae138ad 100644 --- a/modules/lang-painless/build.gradle +++ b/modules/lang-painless/build.gradle @@ -24,6 +24,10 @@ esplugin { classname 'org.elasticsearch.painless.PainlessPlugin' } +integTestCluster { + module project.project(':modules:mapper-extras') +} + dependencies { compile 'org.antlr:antlr4-runtime:4.5.1-1' compile 'org.ow2.asm:asm-debug-all:5.1' diff --git a/modules/mapper-extras/build.gradle b/modules/mapper-extras/build.gradle index a9ab391f6b077..7831de3a68e94 100644 --- a/modules/mapper-extras/build.gradle +++ b/modules/mapper-extras/build.gradle @@ -21,7 +21,3 @@ esplugin { description 'Adds advanced field mappers' classname 'org.elasticsearch.index.mapper.MapperExtrasPlugin' } - -integTestCluster { - module project.project(':modules:lang-painless') -}