From 7181bbde26671bc39d8e1dc0fe588a4548bdef98 Mon Sep 17 00:00:00 2001 From: Ryan Ernst Date: Thu, 26 Feb 2015 01:24:17 -0800 Subject: [PATCH] Mappings: Remove _boost field This has been deprecated since 1.0.0.RC1. It is finally removed here. closes #8875 --- dev-tools/create-bwc-index.py | 6 +- docs/reference/migration/migrate_2_0.asciidoc | 3 +- .../mapping/put/PutMappingRequest.java | 2 +- .../index/mapper/DocumentMapper.java | 10 - .../index/mapper/DocumentMapperParser.java | 2 - .../index/mapper/MapperBuilders.java | 4 - .../index/mapper/MapperService.java | 2 +- .../mapper/internal/BoostFieldMapper.java | 336 ------------------ .../org/elasticsearch/get/GetActionTests.java | 9 +- .../elasticsearch/index/mapper/all/test1.json | 1 - .../boost/BoostMappingIntegrationTests.java | 52 --- .../index/mapper/boost/BoostMappingTests.java | 101 ------ .../index/mapper/simple/test-mapping.json | 3 - .../mapper/simple/test1-notype-noid.json | 1 - .../index/mapper/simple/test1-notype.json | 1 - .../index/mapper/simple/test1-withtype.json | 1 - .../index/mapper/simple/test1.json | 1 - .../basic/TransportSearchFailuresTests.java | 1 - .../basic/TransportTwoNodesSearchTests.java | 23 +- .../search/sort/SimpleSortTests.java | 2 +- .../elasticsearch/bwcompat/index-1.4.2.zip | Bin 19520 -> 50264 bytes .../org/elasticsearch/bwcompat/repo-1.4.2.zip | Bin 16476 -> 45627 bytes 22 files changed, 28 insertions(+), 533 deletions(-) delete mode 100644 src/main/java/org/elasticsearch/index/mapper/internal/BoostFieldMapper.java delete mode 100644 src/test/java/org/elasticsearch/index/mapper/boost/BoostMappingIntegrationTests.java delete mode 100644 src/test/java/org/elasticsearch/index/mapper/boost/BoostMappingTests.java diff --git a/dev-tools/create-bwc-index.py b/dev-tools/create-bwc-index.py index 9397ef873ef..ea1d1746125 100644 --- a/dev-tools/create-bwc-index.py +++ b/dev-tools/create-bwc-index.py @@ -181,7 +181,10 @@ def generate_index(client, version): }, '_routing': { 'path': 'myrouting' - } + }, + '_boost': { + 'null_value': 2.0 + } } mappings['custom_formats'] = { 'properties': { @@ -196,7 +199,6 @@ def generate_index(client, version): } } - client.indices.create(index='test', body={ 'settings': { 'number_of_shards': 1, diff --git a/docs/reference/migration/migrate_2_0.asciidoc b/docs/reference/migration/migrate_2_0.asciidoc index 3314cbe1da0..f6605eefd9f 100644 --- a/docs/reference/migration/migrate_2_0.asciidoc +++ b/docs/reference/migration/migrate_2_0.asciidoc @@ -247,7 +247,7 @@ curl -XGET 'localhost:9200/index/type/_search' } --------------- -==== Meta fields have limited confiugration +==== Meta fields have limited configuration Meta fields (those beginning with underscore) are fields used by elasticsearch to provide special features. They now have limited configuration options. @@ -255,6 +255,7 @@ to provide special features. They now have limited configuration options. * `_type` configuration can no longer be changed. * `_index` configuration is limited to enabling the field. * `_routing` configuration is limited to requiring the field. +* `_boost` has been removed. === Codecs diff --git a/src/main/java/org/elasticsearch/action/admin/indices/mapping/put/PutMappingRequest.java b/src/main/java/org/elasticsearch/action/admin/indices/mapping/put/PutMappingRequest.java index 7783e8100db..7920faa67b2 100644 --- a/src/main/java/org/elasticsearch/action/admin/indices/mapping/put/PutMappingRequest.java +++ b/src/main/java/org/elasticsearch/action/admin/indices/mapping/put/PutMappingRequest.java @@ -53,7 +53,7 @@ import static org.elasticsearch.action.ValidateActions.addValidationError; public class PutMappingRequest extends AcknowledgedRequest implements IndicesRequest.Replaceable { private static ObjectOpenHashSet RESERVED_FIELDS = ObjectOpenHashSet.from( - "_uid", "_id", "_type", "_source", "_all", "_analyzer", "_boost", "_parent", "_routing", "_index", + "_uid", "_id", "_type", "_source", "_all", "_analyzer", "_parent", "_routing", "_index", "_size", "_timestamp", "_ttl" ); diff --git a/src/main/java/org/elasticsearch/index/mapper/DocumentMapper.java b/src/main/java/org/elasticsearch/index/mapper/DocumentMapper.java index 63e9a64f573..b3b9de51985 100644 --- a/src/main/java/org/elasticsearch/index/mapper/DocumentMapper.java +++ b/src/main/java/org/elasticsearch/index/mapper/DocumentMapper.java @@ -22,9 +22,7 @@ package org.elasticsearch.index.mapper; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Maps; import com.google.common.collect.Sets; -import org.apache.lucene.analysis.Analyzer; import org.apache.lucene.document.Field; -import org.apache.lucene.document.FieldType; import org.apache.lucene.index.IndexOptions; import org.apache.lucene.index.IndexableField; import org.apache.lucene.index.LeafReaderContext; @@ -33,7 +31,6 @@ import org.apache.lucene.util.BitDocIdSet; import org.apache.lucene.util.CloseableThreadLocal; import org.elasticsearch.ElasticsearchGenerationException; import org.elasticsearch.ElasticsearchIllegalArgumentException; -import org.elasticsearch.common.Booleans; import org.elasticsearch.common.Nullable; import org.elasticsearch.common.Preconditions; import org.elasticsearch.common.bytes.BytesReference; @@ -50,10 +47,8 @@ import org.elasticsearch.common.xcontent.XContentFactory; import org.elasticsearch.common.xcontent.XContentHelper; import org.elasticsearch.common.xcontent.XContentParser; import org.elasticsearch.common.xcontent.XContentType; -import org.elasticsearch.index.analysis.NamedAnalyzer; import org.elasticsearch.index.cache.bitset.BitsetFilterCache; import org.elasticsearch.index.mapper.internal.AllFieldMapper; -import org.elasticsearch.index.mapper.internal.BoostFieldMapper; import org.elasticsearch.index.mapper.internal.FieldNamesFieldMapper; import org.elasticsearch.index.mapper.internal.IdFieldMapper; import org.elasticsearch.index.mapper.internal.IndexFieldMapper; @@ -194,7 +189,6 @@ public class DocumentMapper implements ToXContent { this.rootMappers.put(SourceFieldMapper.class, new SourceFieldMapper(indexSettings)); this.rootMappers.put(TypeFieldMapper.class, new TypeFieldMapper(indexSettings)); this.rootMappers.put(AllFieldMapper.class, new AllFieldMapper(indexSettings)); - this.rootMappers.put(BoostFieldMapper.class, new BoostFieldMapper(indexSettings)); this.rootMappers.put(TimestampFieldMapper.class, new TimestampFieldMapper(indexSettings)); this.rootMappers.put(TTLFieldMapper.class, new TTLFieldMapper(indexSettings)); this.rootMappers.put(VersionFieldMapper.class, new VersionFieldMapper(indexSettings)); @@ -411,10 +405,6 @@ public class DocumentMapper implements ToXContent { return rootMapper(SizeFieldMapper.class); } - public BoostFieldMapper boostFieldMapper() { - return rootMapper(BoostFieldMapper.class); - } - public Filter typeFilter() { return this.typeFilter; } diff --git a/src/main/java/org/elasticsearch/index/mapper/DocumentMapperParser.java b/src/main/java/org/elasticsearch/index/mapper/DocumentMapperParser.java index 5fecf3d3dd8..8653366788d 100644 --- a/src/main/java/org/elasticsearch/index/mapper/DocumentMapperParser.java +++ b/src/main/java/org/elasticsearch/index/mapper/DocumentMapperParser.java @@ -54,7 +54,6 @@ import org.elasticsearch.index.mapper.core.TypeParsers; import org.elasticsearch.index.mapper.geo.GeoPointFieldMapper; import org.elasticsearch.index.mapper.geo.GeoShapeFieldMapper; import org.elasticsearch.index.mapper.internal.AllFieldMapper; -import org.elasticsearch.index.mapper.internal.BoostFieldMapper; import org.elasticsearch.index.mapper.internal.FieldNamesFieldMapper; import org.elasticsearch.index.mapper.internal.IdFieldMapper; import org.elasticsearch.index.mapper.internal.IndexFieldMapper; @@ -139,7 +138,6 @@ public class DocumentMapperParser extends AbstractIndexComponent { .put(SourceFieldMapper.NAME, new SourceFieldMapper.TypeParser()) .put(TypeFieldMapper.NAME, new TypeFieldMapper.TypeParser()) .put(AllFieldMapper.NAME, new AllFieldMapper.TypeParser()) - .put(BoostFieldMapper.NAME, new BoostFieldMapper.TypeParser()) .put(ParentFieldMapper.NAME, new ParentFieldMapper.TypeParser()) .put(RoutingFieldMapper.NAME, new RoutingFieldMapper.TypeParser()) .put(TimestampFieldMapper.NAME, new TimestampFieldMapper.TypeParser()) diff --git a/src/main/java/org/elasticsearch/index/mapper/MapperBuilders.java b/src/main/java/org/elasticsearch/index/mapper/MapperBuilders.java index 7402acfb69f..51845fdf838 100644 --- a/src/main/java/org/elasticsearch/index/mapper/MapperBuilders.java +++ b/src/main/java/org/elasticsearch/index/mapper/MapperBuilders.java @@ -89,10 +89,6 @@ public final class MapperBuilders { return new ParentFieldMapper.Builder(); } - public static BoostFieldMapper.Builder boost(String name) { - return new BoostFieldMapper.Builder(name); - } - public static AllFieldMapper.Builder all() { return new AllFieldMapper.Builder(); } diff --git a/src/main/java/org/elasticsearch/index/mapper/MapperService.java b/src/main/java/org/elasticsearch/index/mapper/MapperService.java index 02bb00d9535..182f5764d99 100755 --- a/src/main/java/org/elasticsearch/index/mapper/MapperService.java +++ b/src/main/java/org/elasticsearch/index/mapper/MapperService.java @@ -90,7 +90,7 @@ public class MapperService extends AbstractIndexComponent { public static final String DEFAULT_MAPPING = "_default_"; private static ObjectOpenHashSet META_FIELDS = ObjectOpenHashSet.from( - "_uid", "_id", "_type", "_all", "_analyzer", "_boost", "_parent", "_routing", "_index", + "_uid", "_id", "_type", "_all", "_analyzer", "_parent", "_routing", "_index", "_size", "_timestamp", "_ttl" ); private final AnalysisService analysisService; diff --git a/src/main/java/org/elasticsearch/index/mapper/internal/BoostFieldMapper.java b/src/main/java/org/elasticsearch/index/mapper/internal/BoostFieldMapper.java deleted file mode 100644 index 4e5200edc14..00000000000 --- a/src/main/java/org/elasticsearch/index/mapper/internal/BoostFieldMapper.java +++ /dev/null @@ -1,336 +0,0 @@ -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.elasticsearch.index.mapper.internal; - -import org.apache.lucene.document.Field; -import org.apache.lucene.document.FieldType; -import org.apache.lucene.index.IndexOptions; -import org.apache.lucene.search.Filter; -import org.apache.lucene.search.NumericRangeFilter; -import org.apache.lucene.search.NumericRangeQuery; -import org.apache.lucene.search.Query; -import org.apache.lucene.util.BytesRef; -import org.apache.lucene.util.BytesRefBuilder; -import org.apache.lucene.util.NumericUtils; -import org.elasticsearch.common.Nullable; -import org.elasticsearch.common.Numbers; -import org.elasticsearch.common.Strings; -import org.elasticsearch.common.settings.Settings; -import org.elasticsearch.common.unit.Fuzziness; -import org.elasticsearch.common.xcontent.XContentBuilder; -import org.elasticsearch.common.xcontent.XContentParser; -import org.elasticsearch.index.analysis.NumericFloatAnalyzer; -import org.elasticsearch.index.fielddata.FieldDataType; -import org.elasticsearch.index.fielddata.IndexNumericFieldData; -import org.elasticsearch.index.mapper.InternalMapper; -import org.elasticsearch.index.mapper.Mapper; -import org.elasticsearch.index.mapper.MapperBuilders; -import org.elasticsearch.index.mapper.MapperParsingException; -import org.elasticsearch.index.mapper.MergeContext; -import org.elasticsearch.index.mapper.MergeMappingException; -import org.elasticsearch.index.mapper.ParseContext; -import org.elasticsearch.index.mapper.RootMapper; -import org.elasticsearch.index.mapper.core.FloatFieldMapper; -import org.elasticsearch.index.mapper.core.NumberFieldMapper; -import org.elasticsearch.index.query.QueryParseContext; -import org.elasticsearch.index.search.NumericRangeFieldDataFilter; - -import java.io.IOException; -import java.util.Iterator; -import java.util.List; -import java.util.Map; - -import static org.elasticsearch.common.xcontent.support.XContentMapValues.nodeFloatValue; -import static org.elasticsearch.index.mapper.core.TypeParsers.parseNumberField; - -/** - * - */ -public class BoostFieldMapper extends NumberFieldMapper implements InternalMapper, RootMapper { - - public static final String CONTENT_TYPE = "_boost"; - public static final String NAME = "_boost"; - - public static class Defaults extends NumberFieldMapper.Defaults { - public static final String NAME = "_boost"; - public static final Float NULL_VALUE = null; - - public static final FieldType FIELD_TYPE = new FieldType(NumberFieldMapper.Defaults.FIELD_TYPE); - - static { - FIELD_TYPE.setStored(false); - FIELD_TYPE.setIndexOptions(IndexOptions.NONE); // not indexed - } - } - - public static class Builder extends NumberFieldMapper.Builder { - - protected Float nullValue = Defaults.NULL_VALUE; - - public Builder(String name) { - super(name, new FieldType(Defaults.FIELD_TYPE), Defaults.PRECISION_STEP_32_BIT); - builder = this; - } - - public Builder nullValue(float nullValue) { - this.nullValue = nullValue; - return this; - } - - // if we are indexed we use DOCS_ONLY - @Override - protected IndexOptions getDefaultIndexOption() { - return IndexOptions.DOCS; - } - - @Override - public BoostFieldMapper build(BuilderContext context) { - return new BoostFieldMapper(name, buildIndexName(context), - fieldType.numericPrecisionStep(), boost, fieldType, docValues, nullValue, fieldDataSettings, context.indexSettings()); - } - } - - public static class TypeParser implements Mapper.TypeParser { - @Override - public Mapper.Builder parse(String fieldName, Map node, ParserContext parserContext) throws MapperParsingException { - String name = node.get("name") == null ? BoostFieldMapper.Defaults.NAME : node.remove("name").toString(); - BoostFieldMapper.Builder builder = MapperBuilders.boost(name); - parseNumberField(builder, name, node, parserContext); - for (Iterator> iterator = node.entrySet().iterator(); iterator.hasNext();) { - Map.Entry entry = iterator.next(); - String propName = Strings.toUnderscoreCase(entry.getKey()); - Object propNode = entry.getValue(); - if (propName.equals("null_value")) { - builder.nullValue(nodeFloatValue(propNode)); - iterator.remove(); - } - } - return builder; - } - } - - private final Float nullValue; - - public BoostFieldMapper(Settings indexSettings) { - this(Defaults.NAME, Defaults.NAME, indexSettings); - } - - protected BoostFieldMapper(String name, String indexName, Settings indexSettings) { - this(name, indexName, Defaults.PRECISION_STEP_32_BIT, Defaults.BOOST, new FieldType(Defaults.FIELD_TYPE), null, - Defaults.NULL_VALUE, null, indexSettings); - } - - protected BoostFieldMapper(String name, String indexName, int precisionStep, float boost, FieldType fieldType, Boolean docValues, Float nullValue, - @Nullable Settings fieldDataSettings, Settings indexSettings) { - super(new Names(name, indexName, indexName, name), precisionStep, boost, fieldType, docValues, Defaults.IGNORE_MALFORMED, Defaults.COERCE, - NumericFloatAnalyzer.buildNamedAnalyzer(precisionStep), NumericFloatAnalyzer.buildNamedAnalyzer(Integer.MAX_VALUE), - null, null, fieldDataSettings, indexSettings, MultiFields.empty(), null); - this.nullValue = nullValue; - } - - @Override - public FieldType defaultFieldType() { - return Defaults.FIELD_TYPE; - } - - @Override - public FieldDataType defaultFieldDataType() { - return new FieldDataType("float"); - } - - @Override - public boolean hasDocValues() { - return false; - } - - @Override - protected int maxPrecisionStep() { - return 32; - } - - @Override - public Float value(Object value) { - if (value == null) { - return null; - } - if (value instanceof Number) { - return ((Number) value).floatValue(); - } - if (value instanceof BytesRef) { - return Numbers.bytesToFloat((BytesRef) value); - } - return Float.parseFloat(value.toString()); - } - - @Override - public BytesRef indexedValueForSearch(Object value) { - int intValue = NumericUtils.floatToSortableInt(parseValue(value)); - BytesRefBuilder bytesRef = new BytesRefBuilder(); - NumericUtils.intToPrefixCoded(intValue, precisionStep(), bytesRef); - return bytesRef.get(); - } - - private float parseValue(Object value) { - if (value instanceof Number) { - return ((Number) value).floatValue(); - } - if (value instanceof BytesRef) { - return Float.parseFloat(((BytesRef) value).utf8ToString()); - } - return Float.parseFloat(value.toString()); - } - - @Override - public Query fuzzyQuery(String value, Fuzziness fuzziness, int prefixLength, int maxExpansions, boolean transpositions) { - float iValue = Float.parseFloat(value); - float iSim = fuzziness.asFloat(); - return NumericRangeQuery.newFloatRange(names.indexName(), precisionStep, - iValue - iSim, - iValue + iSim, - true, true); - } - - @Override - public Query rangeQuery(Object lowerTerm, Object upperTerm, boolean includeLower, boolean includeUpper, @Nullable QueryParseContext context) { - return NumericRangeQuery.newFloatRange(names.indexName(), precisionStep, - lowerTerm == null ? null : parseValue(lowerTerm), - upperTerm == null ? null : parseValue(upperTerm), - includeLower, includeUpper); - } - - @Override - public Filter rangeFilter(Object lowerTerm, Object upperTerm, boolean includeLower, boolean includeUpper, @Nullable QueryParseContext context) { - return NumericRangeFilter.newFloatRange(names.indexName(), precisionStep, - lowerTerm == null ? null : parseValue(lowerTerm), - upperTerm == null ? null : parseValue(upperTerm), - includeLower, includeUpper); - } - - @Override - public Filter rangeFilter(QueryParseContext parseContext, Object lowerTerm, Object upperTerm, boolean includeLower, boolean includeUpper, @Nullable QueryParseContext context) { - return NumericRangeFieldDataFilter.newFloatRange((IndexNumericFieldData) parseContext.getForField(this), - lowerTerm == null ? null : parseValue(lowerTerm), - upperTerm == null ? null : parseValue(upperTerm), - includeLower, includeUpper); - } - - @Override - public Filter nullValueFilter() { - if (nullValue == null) { - return null; - } - return NumericRangeFilter.newFloatRange(names.indexName(), precisionStep, - nullValue, - nullValue, - true, true); - } - - @Override - public void preParse(ParseContext context) throws IOException { - } - - @Override - public void postParse(ParseContext context) throws IOException { - } - - @Override - public boolean includeInObject() { - return true; - } - - @Override - public void parse(ParseContext context) throws IOException { - // we override parse since we want to handle cases where it is not indexed and not stored (the default) - float value = parseFloatValue(context); - if (!Float.isNaN(value)) { - context.docBoost(value); - } - super.parse(context); - } - - @Override - protected void innerParseCreateField(ParseContext context, List fields) throws IOException { - final float value = parseFloatValue(context); - if (Float.isNaN(value)) { - return; - } - context.docBoost(value); - fields.add(new FloatFieldMapper.CustomFloatNumericField(this, value, fieldType)); - } - - private float parseFloatValue(ParseContext context) throws IOException { - float value; - if (context.parser().currentToken() == XContentParser.Token.VALUE_NULL) { - if (nullValue == null) { - return Float.NaN; - } - value = nullValue; - } else { - value = context.parser().floatValue(coerce.value()); - } - return value; - } - - @Override - protected String contentType() { - return CONTENT_TYPE; - } - - @Override - public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException { - boolean includeDefaults = params.paramAsBoolean("include_defaults", false); - boolean indexed = fieldType.indexOptions() != IndexOptions.NONE; - boolean indexedDefault = Defaults.FIELD_TYPE.indexOptions() != IndexOptions.NONE; - - // all are defaults, don't write it at all - if (!includeDefaults && name().equals(Defaults.NAME) && nullValue == null && - indexed == indexedDefault && - fieldType.stored() == Defaults.FIELD_TYPE.stored() && - customFieldDataSettings == null) { - return builder; - } - builder.startObject(contentType()); - if (includeDefaults || !name().equals(Defaults.NAME)) { - builder.field("name", name()); - } - if (includeDefaults || nullValue != null) { - builder.field("null_value", nullValue); - } - if (includeDefaults || indexed != indexedDefault) { - builder.field("index", indexTokenizeOptionToString(indexed, fieldType.tokenized())); - } - if (includeDefaults || fieldType.stored() != Defaults.FIELD_TYPE.stored()) { - builder.field("store", fieldType.stored()); - } - if (customFieldDataSettings != null) { - builder.field("fielddata", (Map) customFieldDataSettings.getAsMap()); - } else if (includeDefaults) { - builder.field("fielddata", (Map) fieldDataType.getSettings().getAsMap()); - - } - builder.endObject(); - return builder; - } - - @Override - public void merge(Mapper mergeWith, MergeContext mergeContext) throws MergeMappingException { - // do nothing here, no merging, but also no exception - } -} diff --git a/src/test/java/org/elasticsearch/get/GetActionTests.java b/src/test/java/org/elasticsearch/get/GetActionTests.java index 2b45217ab6f..bb2b52c9ee6 100644 --- a/src/test/java/org/elasticsearch/get/GetActionTests.java +++ b/src/test/java/org/elasticsearch/get/GetActionTests.java @@ -1008,7 +1008,7 @@ public class GetActionTests extends ElasticsearchIntegrationTest { @Test public void testUngeneratedFieldsPartOfSourceUnstoredSourceDisabled() throws IOException { indexSingleDocumentWithUngeneratedFieldsThatArePartOf_source(false, false); - String[] fieldsList = {"my_boost"}; + String[] fieldsList = {}; // before refresh - document is only in translog assertGetFieldsAlwaysNull(indexOrAlias(), "doc", "1", fieldsList); refresh(); @@ -1027,7 +1027,7 @@ public class GetActionTests extends ElasticsearchIntegrationTest { sourceEnabled = randomBoolean(); } indexSingleDocumentWithUngeneratedFieldsThatArePartOf_source(stored, sourceEnabled); - String[] fieldsList = {"my_boost"}; + String[] fieldsList = {}; // before refresh - document is only in translog assertGetFieldsAlwaysWorks(indexOrAlias(), "doc", "1", fieldsList); refresh(); @@ -1049,11 +1049,6 @@ public class GetActionTests extends ElasticsearchIntegrationTest { " \"doc\": {\n" + " \"_source\": {\n" + " \"enabled\": " + sourceEnabled + "\n" + - " },\n" + - " \"_boost\": {\n" + - " \"name\": \"my_boost\",\n" + - " \"null_value\": 1,\n" + - " \"store\": \"" + storedString + "\"\n" + " }\n" + " }\n" + " }\n" + diff --git a/src/test/java/org/elasticsearch/index/mapper/all/test1.json b/src/test/java/org/elasticsearch/index/mapper/all/test1.json index 834400a48cb..9e1d8784f8e 100644 --- a/src/test/java/org/elasticsearch/index/mapper/all/test1.json +++ b/src/test/java/org/elasticsearch/index/mapper/all/test1.json @@ -1,5 +1,4 @@ { - "_boost":3.7, "_id":"1", "name":{ "first":"shay", diff --git a/src/test/java/org/elasticsearch/index/mapper/boost/BoostMappingIntegrationTests.java b/src/test/java/org/elasticsearch/index/mapper/boost/BoostMappingIntegrationTests.java deleted file mode 100644 index 826fa481449..00000000000 --- a/src/test/java/org/elasticsearch/index/mapper/boost/BoostMappingIntegrationTests.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.elasticsearch.index.mapper.boost; - -import org.elasticsearch.action.admin.indices.mapping.get.GetFieldMappingsResponse; -import org.elasticsearch.common.xcontent.XContentFactory; -import org.elasticsearch.test.ElasticsearchIntegrationTest; -import org.junit.Test; - -import java.util.LinkedHashMap; -import java.util.Map; - -import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertAcked; -import static org.hamcrest.Matchers.equalTo; - - -public class BoostMappingIntegrationTests extends ElasticsearchIntegrationTest { - - @Test - public void testSetValues() throws Exception { - String mapping = XContentFactory.jsonBuilder().startObject().startObject("type") - .startObject("_boost") - .field("store", "yes").field("index", "not_analyzed") - .endObject() - .endObject().endObject().string(); - assertAcked(prepareCreate("test").addMapping("type", mapping)); - ensureYellow(); - GetFieldMappingsResponse response = client().admin().indices().prepareGetFieldMappings().addIndices("test").addTypes("type").setFields("_boost").get(); - assertTrue(response.mappings().containsKey("test")); - assertNotNull(response.fieldMappings("test", "type", "_boost")); - Map boostSource = response.fieldMappings("test", "type", "_boost").sourceAsMap(); - assertThat((Boolean)((LinkedHashMap)(boostSource.get("_boost"))).get("store"), equalTo(true)); - assertThat((String)((LinkedHashMap)(boostSource.get("_boost"))).get("index"), equalTo("not_analyzed")); - } -} diff --git a/src/test/java/org/elasticsearch/index/mapper/boost/BoostMappingTests.java b/src/test/java/org/elasticsearch/index/mapper/boost/BoostMappingTests.java deleted file mode 100644 index e1f159fa5bd..00000000000 --- a/src/test/java/org/elasticsearch/index/mapper/boost/BoostMappingTests.java +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.elasticsearch.index.mapper.boost; - -import org.apache.lucene.index.IndexOptions; -import org.apache.lucene.index.IndexableField; -import org.elasticsearch.common.xcontent.XContentFactory; -import org.elasticsearch.index.mapper.DocumentMapper; -import org.elasticsearch.index.mapper.ParsedDocument; -import org.elasticsearch.index.mapper.internal.BoostFieldMapper; -import org.elasticsearch.index.IndexService; -import org.elasticsearch.test.ElasticsearchSingleNodeTest; -import org.junit.Test; - -import static org.hamcrest.Matchers.equalTo; - -/** - */ -public class BoostMappingTests extends ElasticsearchSingleNodeTest { - - @Test - public void testDefaultMapping() throws Exception { - String mapping = XContentFactory.jsonBuilder().startObject().startObject("type").endObject().endObject().string(); - - DocumentMapper mapper = createIndex("test").mapperService().documentMapperParser().parse(mapping); - - ParsedDocument doc = mapper.parse("type", "1", XContentFactory.jsonBuilder().startObject() - .field("_boost", 2.0f) - .field("field", "a") - .field("field", "b") - .endObject().bytes()); - - // one fo the same named field will have the proper boost, the others will have 1 - IndexableField[] fields = doc.rootDoc().getFields("field"); - assertThat(fields[0].boost(), equalTo(2.0f)); - assertThat(fields[1].boost(), equalTo(1.0f)); - } - - @Test - public void testCustomName() throws Exception { - String mapping = XContentFactory.jsonBuilder().startObject().startObject("type") - .startObject("_boost").field("name", "custom_boost").endObject() - .endObject().endObject().string(); - - DocumentMapper mapper = createIndex("test").mapperService().documentMapperParser().parse(mapping); - - ParsedDocument doc = mapper.parse("type", "1", XContentFactory.jsonBuilder().startObject() - .field("field", "a") - .field("_boost", 2.0f) - .endObject().bytes()); - assertThat(doc.rootDoc().getField("field").boost(), equalTo(1.0f)); - - doc = mapper.parse("type", "1", XContentFactory.jsonBuilder().startObject() - .field("field", "a") - .field("custom_boost", 2.0f) - .endObject().bytes()); - assertThat(doc.rootDoc().getField("field").boost(), equalTo(2.0f)); - } - - @Test - public void testDefaultValues() throws Exception { - String mapping = XContentFactory.jsonBuilder().startObject().startObject("type").endObject().string(); - DocumentMapper docMapper = createIndex("test").mapperService().documentMapperParser().parse(mapping); - assertThat(docMapper.boostFieldMapper().fieldType().stored(), equalTo(BoostFieldMapper.Defaults.FIELD_TYPE.stored())); - assertThat(docMapper.boostFieldMapper().fieldType().indexOptions(), equalTo(BoostFieldMapper.Defaults.FIELD_TYPE.indexOptions())); - } - - @Test - public void testSetValues() throws Exception { - String mapping = XContentFactory.jsonBuilder().startObject().startObject("type") - .startObject("_boost") - .field("store", "yes").field("index", "not_analyzed") - .endObject() - .endObject().endObject().string(); - IndexService indexServices = createIndex("test"); - DocumentMapper docMapper = indexServices.mapperService().documentMapperParser().parse("type", mapping); - assertThat(docMapper.boostFieldMapper().fieldType().stored(), equalTo(true)); - assertEquals(IndexOptions.DOCS, docMapper.boostFieldMapper().fieldType().indexOptions()); - docMapper.refreshSource(); - docMapper = indexServices.mapperService().documentMapperParser().parse("type", docMapper.mappingSource().string()); - assertThat(docMapper.boostFieldMapper().fieldType().stored(), equalTo(true)); - assertEquals(IndexOptions.DOCS, docMapper.boostFieldMapper().fieldType().indexOptions()); - } -} diff --git a/src/test/java/org/elasticsearch/index/mapper/simple/test-mapping.json b/src/test/java/org/elasticsearch/index/mapper/simple/test-mapping.json index ce2805cabc4..e001673758a 100644 --- a/src/test/java/org/elasticsearch/index/mapper/simple/test-mapping.json +++ b/src/test/java/org/elasticsearch/index/mapper/simple/test-mapping.json @@ -8,9 +8,6 @@ enabled:true, _source:{ }, - _boost:{ - null_value:2.0 - }, properties:{ name:{ type:"object", diff --git a/src/test/java/org/elasticsearch/index/mapper/simple/test1-notype-noid.json b/src/test/java/org/elasticsearch/index/mapper/simple/test1-notype-noid.json index 745617a5000..eb71b7a8204 100644 --- a/src/test/java/org/elasticsearch/index/mapper/simple/test1-notype-noid.json +++ b/src/test/java/org/elasticsearch/index/mapper/simple/test1-notype-noid.json @@ -1,5 +1,4 @@ { - _boost:3.7, name:{ first:"shay", last:"banon" diff --git a/src/test/java/org/elasticsearch/index/mapper/simple/test1-notype.json b/src/test/java/org/elasticsearch/index/mapper/simple/test1-notype.json index 7f38d0d3343..e91f2f543d6 100644 --- a/src/test/java/org/elasticsearch/index/mapper/simple/test1-notype.json +++ b/src/test/java/org/elasticsearch/index/mapper/simple/test1-notype.json @@ -1,5 +1,4 @@ { - _boost:3.7, _id:"1", name:{ first:"shay", diff --git a/src/test/java/org/elasticsearch/index/mapper/simple/test1-withtype.json b/src/test/java/org/elasticsearch/index/mapper/simple/test1-withtype.json index 096554abb20..5711d5835b3 100644 --- a/src/test/java/org/elasticsearch/index/mapper/simple/test1-withtype.json +++ b/src/test/java/org/elasticsearch/index/mapper/simple/test1-withtype.json @@ -1,6 +1,5 @@ { person:{ - _boost:3.7, _id:"1", name:{ first:"shay", diff --git a/src/test/java/org/elasticsearch/index/mapper/simple/test1.json b/src/test/java/org/elasticsearch/index/mapper/simple/test1.json index 93507daffef..70ba1a5f87d 100644 --- a/src/test/java/org/elasticsearch/index/mapper/simple/test1.json +++ b/src/test/java/org/elasticsearch/index/mapper/simple/test1.json @@ -1,5 +1,4 @@ { - _boost:3.7, _id:"1", name:{ first:"shay", diff --git a/src/test/java/org/elasticsearch/search/basic/TransportSearchFailuresTests.java b/src/test/java/org/elasticsearch/search/basic/TransportSearchFailuresTests.java index 2585da605da..2336dcc60fa 100644 --- a/src/test/java/org/elasticsearch/search/basic/TransportSearchFailuresTests.java +++ b/src/test/java/org/elasticsearch/search/basic/TransportSearchFailuresTests.java @@ -123,7 +123,6 @@ public class TransportSearchFailuresTests extends ElasticsearchIntegrationTest { .field("name", nameValue + id) .field("age", age) .field("multi", multi.toString()) - .field("_boost", age * 10) .endObject(); } } diff --git a/src/test/java/org/elasticsearch/search/basic/TransportTwoNodesSearchTests.java b/src/test/java/org/elasticsearch/search/basic/TransportTwoNodesSearchTests.java index 3738e81d905..aa242bd8128 100644 --- a/src/test/java/org/elasticsearch/search/basic/TransportTwoNodesSearchTests.java +++ b/src/test/java/org/elasticsearch/search/basic/TransportTwoNodesSearchTests.java @@ -60,9 +60,6 @@ import static org.elasticsearch.search.builder.SearchSourceBuilder.searchSource; import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertNoFailures; import static org.hamcrest.Matchers.*; -/** - * - */ public class TransportTwoNodesSearchTests extends ElasticsearchIntegrationTest { @Override @@ -113,13 +110,27 @@ public class TransportTwoNodesSearchTests extends ElasticsearchIntegrationTest { .field("name", nameValue + id) .field("age", age) .field("multi", multi.toString()) - .field("_boost", age * 10) .endObject(); } @Test public void testDfsQueryThenFetch() throws Exception { - prepareData(); + ImmutableSettings.Builder settingsBuilder = settingsBuilder() + .put(indexSettings()) + .put("routing.hash.type", "simple"); + client().admin().indices().create(createIndexRequest("test") + .settings(settingsBuilder)) + .actionGet(); + ensureGreen(); + + // we need to have age (ie number of repeats of "test" term) high enough + // to produce the same 8-bit norm for all docs here, so that + // the tf is basically the entire score (assuming idf is fixed, which + // it should be if dfs is working correctly) + for (int i = 1024; i < 1124; i++) { + index(Integer.toString(i - 1024), "test", i); + } + refresh(); int total = 0; SearchResponse searchResponse = client().prepareSearch("test").setSearchType(DFS_QUERY_THEN_FETCH).setQuery(termQuery("multi", "test")).setSize(60).setExplain(true).setScroll(TimeValue.timeValueSeconds(30)).get(); @@ -133,7 +144,7 @@ public class TransportTwoNodesSearchTests extends ElasticsearchIntegrationTest { for (int i = 0; i < hits.length; ++i) { SearchHit hit = hits[i]; assertThat(hit.explanation(), notNullValue()); - assertThat("id[" + hit.id() + "]", hit.id(), equalTo(Integer.toString(100 - total - i - 1))); + assertThat("id[" + hit.id() + "] -> " + hit.explanation().toString(), hit.id(), equalTo(Integer.toString(100 - total - i - 1))); } total += hits.length; searchResponse = client().prepareSearchScroll(searchResponse.getScrollId()).setScroll(TimeValue.timeValueSeconds(30)).get(); diff --git a/src/test/java/org/elasticsearch/search/sort/SimpleSortTests.java b/src/test/java/org/elasticsearch/search/sort/SimpleSortTests.java index 52f4bd4f2af..24b5403ac00 100644 --- a/src/test/java/org/elasticsearch/search/sort/SimpleSortTests.java +++ b/src/test/java/org/elasticsearch/search/sort/SimpleSortTests.java @@ -155,7 +155,7 @@ public class SimpleSortTests extends ElasticsearchIntegrationTest { public void testIssue6639() throws ExecutionException, InterruptedException { assertAcked(prepareCreate("$index") - .addMapping("$type","{\"$type\": {\"_boost\": {\"name\": \"boost\", \"null_value\": 1.0}, \"properties\": {\"grantee\": {\"index\": \"not_analyzed\", \"term_vector\": \"with_positions_offsets\", \"type\": \"string\", \"analyzer\": \"snowball\", \"boost\": 1.0, \"store\": \"yes\"}}}}")); + .addMapping("$type","{\"$type\": {\"properties\": {\"grantee\": {\"index\": \"not_analyzed\", \"term_vector\": \"with_positions_offsets\", \"type\": \"string\", \"analyzer\": \"snowball\", \"boost\": 1.0, \"store\": \"yes\"}}}}")); indexRandom(true, client().prepareIndex("$index", "$type", "data.activity.5").setSource("{\"django_ct\": \"data.activity\", \"grantee\": \"Grantee 1\"}"), client().prepareIndex("$index", "$type", "data.activity.6").setSource("{\"django_ct\": \"data.activity\", \"grantee\": \"Grantee 2\"}")); diff --git a/src/test/resources/org/elasticsearch/bwcompat/index-1.4.2.zip b/src/test/resources/org/elasticsearch/bwcompat/index-1.4.2.zip index 6b601dd4adfcd9e94cdb5f224e58841b029a9089..6602a1dd6ad24390183052a5fb4d8f15266851e3 100644 GIT binary patch literal 50264 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 ZQ^X(vDGY$rUBI^$83@Q2;2l9g{vY4frU?K5 literal 19520 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

~n>{KoJ$`0x7y2MYCE1 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≠g#a|!5^$O?izL9hJTZ|5B^}Oao39XHe6ix zKKO%`#$8|A+i-Qc```~28h2eQZ^Orw?t?#AXWVsuyba$|z7PIjnQ_-V@izRi>V5DB ztBku>y_?YWKk(EHdu8`Q3&ysow{Gu*SISj&~c*uW=vz!4l)HP1bFAjLv=V2P=%b zmQ%Okxi9X6KUiSgb#S^3uh6{@{$PD^*9Pe}yhrao_=DxeU0;>k@G+zN;15<8cTGxe z!&i;(gFjeY+%@{R4F@&75B^|nakrcNHvH_>eeefMi@R;Fx8X%L_rZZC*azyCI~}CA z;h$~qg9H7f4};(B!n_S1v%3!t^khB^ez&FSHr&+tJ~+@|^)UF|PK(>{Vz>L?K;Ol~ z;CEXaZo?DZ?}G!44iAIhZ4bB&FZZ|)4m1lq41TxR{x-bj&3$m7^!{P+yLIcg;X`ll zga1P?`oE%?cT2x-!?!)}g9C-&4_o=&+Q-{)3IF@xKqchE;CIWR{)B@9k)&+T=y(4a z{%@&`hrQ6<1n2D+qK^JgFZ4frnY)Rt+b@$C``63-Tbk=(zrfu*&u#K@++XAeuNeXu U_6GtY0(=`|f`ELE|M}DZ0V=1n1ONa4 literal 16476 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