diff --git a/benchmarks/src/main/java/org/elasticsearch/benchmark/script/ScriptScoreBenchmark.java b/benchmarks/src/main/java/org/elasticsearch/benchmark/script/ScriptScoreBenchmark.java index a54b70e231ab4..396ffe1b5fe81 100644 --- a/benchmarks/src/main/java/org/elasticsearch/benchmark/script/ScriptScoreBenchmark.java +++ b/benchmarks/src/main/java/org/elasticsearch/benchmark/script/ScriptScoreBenchmark.java @@ -22,9 +22,9 @@ import org.apache.lucene.store.Directory; import org.apache.lucene.store.MMapDirectory; import org.apache.lucene.util.IOUtils; -import org.elasticsearch.Version; import org.elasticsearch.common.lucene.search.function.ScriptScoreQuery; import org.elasticsearch.common.settings.Settings; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.fielddata.FieldDataContext; import org.elasticsearch.index.fielddata.IndexFieldDataCache; import org.elasticsearch.index.fielddata.IndexNumericFieldData; @@ -148,7 +148,7 @@ public TopDocs benchmark() throws IOException { private Query scriptScoreQuery(ScoreScript.Factory factory) { ScoreScript.LeafFactory leafFactory = factory.newFactory(Map.of(), lookup); - return new ScriptScoreQuery(new MatchAllDocsQuery(), null, leafFactory, lookup, null, "test", 0, Version.CURRENT); + return new ScriptScoreQuery(new MatchAllDocsQuery(), null, leafFactory, lookup, null, "test", 0, IndexVersion.CURRENT); } private ScoreScript.Factory bareMetalScript() { diff --git a/benchmarks/src/main/java/org/elasticsearch/benchmark/vector/DistanceFunctionBenchmark.java b/benchmarks/src/main/java/org/elasticsearch/benchmark/vector/DistanceFunctionBenchmark.java index da91b8adbfe17..11180f503e305 100644 --- a/benchmarks/src/main/java/org/elasticsearch/benchmark/vector/DistanceFunctionBenchmark.java +++ b/benchmarks/src/main/java/org/elasticsearch/benchmark/vector/DistanceFunctionBenchmark.java @@ -9,7 +9,7 @@ package org.elasticsearch.benchmark.vector; import org.apache.lucene.util.BytesRef; -import org.elasticsearch.Version; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.script.field.vectors.BinaryDenseVector; import org.elasticsearch.script.field.vectors.ByteBinaryDenseVector; import org.elasticsearch.script.field.vectors.ByteKnnDenseVector; @@ -242,7 +242,7 @@ private DotBinaryFloatBenchmarkFunction(int dims) { @Override public void execute(Consumer consumer) { - new BinaryDenseVector(docFloatVector, docVector, dims, Version.CURRENT).dotProduct(queryVector); + new BinaryDenseVector(docFloatVector, docVector, dims, IndexVersion.CURRENT).dotProduct(queryVector); } } @@ -290,7 +290,7 @@ private CosineBinaryFloatBenchmarkFunction(int dims) { @Override public void execute(Consumer consumer) { - new BinaryDenseVector(docFloatVector, docVector, dims, Version.CURRENT).cosineSimilarity(queryVector, false); + new BinaryDenseVector(docFloatVector, docVector, dims, IndexVersion.CURRENT).cosineSimilarity(queryVector, false); } } @@ -338,7 +338,7 @@ private L1BinaryFloatBenchmarkFunction(int dims) { @Override public void execute(Consumer consumer) { - new BinaryDenseVector(docFloatVector, docVector, dims, Version.CURRENT).l1Norm(queryVector); + new BinaryDenseVector(docFloatVector, docVector, dims, IndexVersion.CURRENT).l1Norm(queryVector); } } @@ -386,7 +386,7 @@ private L2BinaryFloatBenchmarkFunction(int dims) { @Override public void execute(Consumer consumer) { - new BinaryDenseVector(docFloatVector, docVector, dims, Version.CURRENT).l1Norm(queryVector); + new BinaryDenseVector(docFloatVector, docVector, dims, IndexVersion.CURRENT).l1Norm(queryVector); } } diff --git a/modules/analysis-common/src/main/java/org/elasticsearch/analysis/common/CommonAnalysisPlugin.java b/modules/analysis-common/src/main/java/org/elasticsearch/analysis/common/CommonAnalysisPlugin.java index 2950ce564dc9b..0ceb4cb50ce35 100644 --- a/modules/analysis-common/src/main/java/org/elasticsearch/analysis/common/CommonAnalysisPlugin.java +++ b/modules/analysis-common/src/main/java/org/elasticsearch/analysis/common/CommonAnalysisPlugin.java @@ -112,6 +112,7 @@ import org.elasticsearch.env.Environment; import org.elasticsearch.env.NodeEnvironment; import org.elasticsearch.index.IndexSettings; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.analysis.AnalyzerProvider; import org.elasticsearch.index.analysis.CharFilterFactory; import org.elasticsearch.index.analysis.PreBuiltAnalyzerProviderFactory; @@ -260,7 +261,7 @@ public Map> getTokenFilters() { return new EdgeNGramTokenFilterFactory(indexSettings, environment, name, settings) { @Override public TokenStream create(TokenStream tokenStream) { - if (indexSettings.getIndexVersionCreated().onOrAfter(org.elasticsearch.Version.V_8_0_0)) { + if (indexSettings.getIndexVersionCreated().onOrAfter(IndexVersion.V_8_0_0)) { throw new IllegalArgumentException( "The [edgeNGram] token filter name was deprecated in 6.4 and cannot be used in new indices. " + "Please change the filter name to [edge_ngram] instead." @@ -301,7 +302,7 @@ public TokenStream create(TokenStream tokenStream) { return new NGramTokenFilterFactory(indexSettings, environment, name, settings) { @Override public TokenStream create(TokenStream tokenStream) { - if (indexSettings.getIndexVersionCreated().onOrAfter(org.elasticsearch.Version.V_8_0_0)) { + if (indexSettings.getIndexVersionCreated().onOrAfter(IndexVersion.V_8_0_0)) { throw new IllegalArgumentException( "The [nGram] token filter name was deprecated in 6.4 and cannot be used in new indices. " + "Please change the filter name to [ngram] instead." @@ -381,12 +382,12 @@ public Map> getTokenizers() { tokenizers.put("simple_pattern_split", SimplePatternSplitTokenizerFactory::new); tokenizers.put("thai", ThaiTokenizerFactory::new); tokenizers.put("nGram", (IndexSettings indexSettings, Environment environment, String name, Settings settings) -> { - if (indexSettings.getIndexVersionCreated().onOrAfter(org.elasticsearch.Version.V_8_0_0)) { + if (indexSettings.getIndexVersionCreated().onOrAfter(IndexVersion.V_8_0_0)) { throw new IllegalArgumentException( "The [nGram] tokenizer name was deprecated in 7.6. " + "Please use the tokenizer name to [ngram] for indices created in versions 8 or higher instead." ); - } else if (indexSettings.getIndexVersionCreated().onOrAfter(org.elasticsearch.Version.V_7_6_0)) { + } else if (indexSettings.getIndexVersionCreated().onOrAfter(IndexVersion.V_7_6_0)) { deprecationLogger.warn( DeprecationCategory.ANALYSIS, "nGram_tokenizer_deprecation", @@ -398,12 +399,12 @@ public Map> getTokenizers() { }); tokenizers.put("ngram", NGramTokenizerFactory::new); tokenizers.put("edgeNGram", (IndexSettings indexSettings, Environment environment, String name, Settings settings) -> { - if (indexSettings.getIndexVersionCreated().onOrAfter(org.elasticsearch.Version.V_8_0_0)) { + if (indexSettings.getIndexVersionCreated().onOrAfter(IndexVersion.V_8_0_0)) { throw new IllegalArgumentException( "The [edgeNGram] tokenizer name was deprecated in 7.6. " + "Please use the tokenizer name to [edge_nGram] for indices created in versions 8 or higher instead." ); - } else if (indexSettings.getIndexVersionCreated().onOrAfter(org.elasticsearch.Version.V_7_6_0)) { + } else if (indexSettings.getIndexVersionCreated().onOrAfter(IndexVersion.V_7_6_0)) { deprecationLogger.warn( DeprecationCategory.ANALYSIS, "edgeNGram_tokenizer_deprecation", diff --git a/modules/data-streams/src/test/java/org/elasticsearch/datastreams/DataStreamGetWriteIndexTests.java b/modules/data-streams/src/test/java/org/elasticsearch/datastreams/DataStreamGetWriteIndexTests.java index b60d5af917cbd..05d33304e5075 100644 --- a/modules/data-streams/src/test/java/org/elasticsearch/datastreams/DataStreamGetWriteIndexTests.java +++ b/modules/data-streams/src/test/java/org/elasticsearch/datastreams/DataStreamGetWriteIndexTests.java @@ -8,7 +8,6 @@ package org.elasticsearch.datastreams; -import org.elasticsearch.Version; import org.elasticsearch.action.ActionListener; import org.elasticsearch.action.DocWriteRequest; import org.elasticsearch.action.admin.indices.create.CreateIndexRequest; @@ -38,6 +37,7 @@ import org.elasticsearch.env.Environment; import org.elasticsearch.index.Index; import org.elasticsearch.index.IndexSettingProviders; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.mapper.DateFieldMapper; import org.elasticsearch.index.mapper.MapperBuilderContext; import org.elasticsearch.index.mapper.Mapping; @@ -220,7 +220,7 @@ public void setup() throws Exception { null, ScriptCompiler.NONE, false, - Version.CURRENT + IndexVersion.CURRENT ).build(MapperBuilderContext.root(false)); RootObjectMapper.Builder root = new RootObjectMapper.Builder("_doc", ObjectMapper.Defaults.SUBOBJECTS); root.add( @@ -230,7 +230,7 @@ public void setup() throws Exception { DateFieldMapper.DEFAULT_DATE_TIME_FORMATTER, ScriptCompiler.NONE, true, - Version.CURRENT + IndexVersion.CURRENT ) ); MetadataFieldMapper dtfm = DataStreamTestHelper.getDataStreamTimestampFieldMapper(); diff --git a/modules/data-streams/src/test/java/org/elasticsearch/datastreams/mapper/DataStreamTimestampFieldMapperTests.java b/modules/data-streams/src/test/java/org/elasticsearch/datastreams/mapper/DataStreamTimestampFieldMapperTests.java index 1ea85859e1dfe..7c6f29bfb21e7 100644 --- a/modules/data-streams/src/test/java/org/elasticsearch/datastreams/mapper/DataStreamTimestampFieldMapperTests.java +++ b/modules/data-streams/src/test/java/org/elasticsearch/datastreams/mapper/DataStreamTimestampFieldMapperTests.java @@ -7,10 +7,10 @@ */ package org.elasticsearch.datastreams.mapper; -import org.elasticsearch.Version; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.core.CheckedConsumer; import org.elasticsearch.datastreams.DataStreamsPlugin; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.mapper.DataStreamTimestampFieldMapper; import org.elasticsearch.index.mapper.DateFieldMapper; import org.elasticsearch.index.mapper.DocumentMapper; @@ -170,7 +170,7 @@ public void testValidateDefaultIgnoreMalformed() throws Exception { Settings indexSettings = Settings.builder().put(FieldMapper.IGNORE_MALFORMED_SETTING.getKey(), true).build(); Exception e = expectThrows( IllegalArgumentException.class, - () -> createMapperService(Version.CURRENT, indexSettings, () -> true, timestampMapping(true, b -> { + () -> createMapperService(IndexVersion.CURRENT, indexSettings, () -> true, timestampMapping(true, b -> { b.startObject("@timestamp"); b.field("type", "date"); b.endObject(); @@ -181,7 +181,7 @@ public void testValidateDefaultIgnoreMalformed() throws Exception { equalTo("data stream timestamp field [@timestamp] has disallowed [ignore_malformed] attribute specified") ); - MapperService mapperService = createMapperService(Version.CURRENT, indexSettings, () -> true, timestampMapping(true, b -> { + MapperService mapperService = createMapperService(IndexVersion.CURRENT, indexSettings, () -> true, timestampMapping(true, b -> { b.startObject("@timestamp"); b.field("type", "date"); b.field("ignore_malformed", false); diff --git a/modules/legacy-geo/src/main/java/org/elasticsearch/legacygeo/mapper/LegacyGeoShapeFieldMapper.java b/modules/legacy-geo/src/main/java/org/elasticsearch/legacygeo/mapper/LegacyGeoShapeFieldMapper.java index 9bcd66bd0f538..1a7f1a2a82883 100644 --- a/modules/legacy-geo/src/main/java/org/elasticsearch/legacygeo/mapper/LegacyGeoShapeFieldMapper.java +++ b/modules/legacy-geo/src/main/java/org/elasticsearch/legacygeo/mapper/LegacyGeoShapeFieldMapper.java @@ -17,7 +17,6 @@ import org.apache.lucene.spatial.prefix.tree.QuadPrefixTree; import org.apache.lucene.spatial.prefix.tree.SpatialPrefixTree; import org.elasticsearch.ElasticsearchParseException; -import org.elasticsearch.Version; import org.elasticsearch.common.Explicit; import org.elasticsearch.common.geo.GeoUtils; import org.elasticsearch.common.geo.GeometryFormatterFactory; @@ -29,6 +28,7 @@ import org.elasticsearch.common.xcontent.support.XContentMapValues; import org.elasticsearch.core.CheckedConsumer; import org.elasticsearch.geometry.Geometry; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.analysis.NamedAnalyzer; import org.elasticsearch.index.mapper.AbstractShapeGeometryFieldMapper; import org.elasticsearch.index.mapper.DocumentParserContext; @@ -220,9 +220,9 @@ public static class Builder extends FieldMapper.Builder { Parameter> meta = Parameter.metaParam(); - private final Version indexCreatedVersion; + private final IndexVersion indexCreatedVersion; - public Builder(String name, Version version, boolean ignoreMalformedByDefault, boolean coerceByDefault) { + public Builder(String name, IndexVersion version, boolean ignoreMalformedByDefault, boolean coerceByDefault) { super(name); if (ShapesAvailability.JTS_AVAILABLE == false || ShapesAvailability.SPATIAL4J_AVAILABLE == false) { @@ -243,7 +243,7 @@ public Builder(String name, Version version, boolean ignoreMalformedByDefault, b }); // Set up serialization - if (version.onOrAfter(Version.V_7_0_0)) { + if (version.onOrAfter(IndexVersion.V_7_0_0)) { this.strategy.alwaysSerialize(); } // serialize treeLevels if treeLevels is configured, OR if defaults are requested and precision is not configured @@ -542,7 +542,7 @@ public PrefixTreeStrategy resolvePrefixTreeStrategy(String strategyName) { } } - private final Version indexCreatedVersion; + private final IndexVersion indexCreatedVersion; private final Builder builder; public LegacyGeoShapeFieldMapper( diff --git a/modules/legacy-geo/src/test/java/org/elasticsearch/legacygeo/GeoJsonShapeParserTests.java b/modules/legacy-geo/src/test/java/org/elasticsearch/legacygeo/GeoJsonShapeParserTests.java index 5e0f4f29163d7..b83069f8885b2 100644 --- a/modules/legacy-geo/src/test/java/org/elasticsearch/legacygeo/GeoJsonShapeParserTests.java +++ b/modules/legacy-geo/src/test/java/org/elasticsearch/legacygeo/GeoJsonShapeParserTests.java @@ -20,6 +20,7 @@ import org.elasticsearch.geometry.Line; import org.elasticsearch.geometry.MultiLine; import org.elasticsearch.geometry.MultiPoint; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.mapper.MapperBuilderContext; import org.elasticsearch.legacygeo.mapper.LegacyGeoShapeFieldMapper; import org.elasticsearch.legacygeo.parsers.ShapeParser; @@ -384,7 +385,7 @@ public void testParse3DPolygon() throws IOException, ParseException { Version randomVersion = VersionUtils.randomIndexCompatibleVersion(random()); LinearRing shell = GEOMETRY_FACTORY.createLinearRing(shellCoordinates.toArray(new Coordinate[shellCoordinates.size()])); Polygon expected = GEOMETRY_FACTORY.createPolygon(shell, null); - final Version version = VersionUtils.randomPreviousCompatibleVersion(random(), Version.V_8_0_0); + final IndexVersion version = VersionUtils.randomPreviousCompatibleVersion(random(), Version.V_8_0_0).indexVersion; final LegacyGeoShapeFieldMapper mapperBuilder = new LegacyGeoShapeFieldMapper.Builder("test", version, false, true).build( MapperBuilderContext.root(false) ); diff --git a/modules/legacy-geo/src/test/java/org/elasticsearch/legacygeo/GeoWKTShapeParserTests.java b/modules/legacy-geo/src/test/java/org/elasticsearch/legacygeo/GeoWKTShapeParserTests.java index 21e9b3e6344d5..16eb8966e680d 100644 --- a/modules/legacy-geo/src/test/java/org/elasticsearch/legacygeo/GeoWKTShapeParserTests.java +++ b/modules/legacy-geo/src/test/java/org/elasticsearch/legacygeo/GeoWKTShapeParserTests.java @@ -18,6 +18,7 @@ import org.elasticsearch.geometry.Line; import org.elasticsearch.geometry.MultiLine; import org.elasticsearch.geometry.MultiPoint; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.mapper.MapperBuilderContext; import org.elasticsearch.legacygeo.builders.CoordinatesBuilder; import org.elasticsearch.legacygeo.builders.EnvelopeBuilder; @@ -292,9 +293,8 @@ public void testParseMixedDimensionPolyWithHole() throws IOException, ParseExcep XContentParser parser = createParser(xContentBuilder); parser.nextToken(); - final LegacyGeoShapeFieldMapper mapperBuilder = new LegacyGeoShapeFieldMapper.Builder("test", Version.CURRENT, false, true).build( - MapperBuilderContext.root(false) - ); + final LegacyGeoShapeFieldMapper mapperBuilder = new LegacyGeoShapeFieldMapper.Builder("test", IndexVersion.CURRENT, false, true) + .build(MapperBuilderContext.root(false)); // test store z disabled ElasticsearchException e = expectThrows(ElasticsearchException.class, () -> ShapeParser.parse(parser, mapperBuilder)); @@ -324,7 +324,7 @@ public void testParseMixedDimensionPolyWithHoleStoredZ() throws IOException { XContentParser parser = createParser(xContentBuilder); parser.nextToken(); - final Version version = VersionUtils.randomPreviousCompatibleVersion(random(), Version.V_8_0_0); + final IndexVersion version = VersionUtils.randomPreviousCompatibleVersion(random(), Version.V_8_0_0).indexVersion; final LegacyGeoShapeFieldMapper mapperBuilder = new LegacyGeoShapeFieldMapper.Builder("test", version, false, true).build( MapperBuilderContext.root(false) ); @@ -348,7 +348,7 @@ public void testParsePolyWithStoredZ() throws IOException { XContentParser parser = createParser(xContentBuilder); parser.nextToken(); - final Version version = VersionUtils.randomPreviousCompatibleVersion(random(), Version.V_8_0_0); + final IndexVersion version = VersionUtils.randomPreviousCompatibleVersion(random(), Version.V_8_0_0).indexVersion; final LegacyGeoShapeFieldMapper mapperBuilder = new LegacyGeoShapeFieldMapper.Builder("test", version, false, true).build( MapperBuilderContext.root(false) ); @@ -364,7 +364,7 @@ public void testParseOpenPolygon() throws IOException { XContentParser parser = createParser(xContentBuilder); parser.nextToken(); - final Version version = VersionUtils.randomPreviousCompatibleVersion(random(), Version.V_8_0_0); + final IndexVersion version = VersionUtils.randomPreviousCompatibleVersion(random(), Version.V_8_0_0).indexVersion; final LegacyGeoShapeFieldMapper defaultMapperBuilder = new LegacyGeoShapeFieldMapper.Builder("test", version, false, true).coerce( false ).build(MapperBuilderContext.root(false)); @@ -374,9 +374,12 @@ public void testParseOpenPolygon() throws IOException { ); assertEquals("invalid LinearRing found (coordinates are not closed)", exception.getMessage()); - final LegacyGeoShapeFieldMapper coercingMapperBuilder = new LegacyGeoShapeFieldMapper.Builder("test", Version.CURRENT, false, true) - .coerce(true) - .build(MapperBuilderContext.root(false)); + final LegacyGeoShapeFieldMapper coercingMapperBuilder = new LegacyGeoShapeFieldMapper.Builder( + "test", + IndexVersion.CURRENT, + false, + true + ).coerce(true).build(MapperBuilderContext.root(false)); ShapeBuilder shapeBuilder = ShapeParser.parse(parser, coercingMapperBuilder); assertNotNull(shapeBuilder); assertEquals("polygon ((100.0 5.0, 100.0 10.0, 90.0 10.0, 90.0 5.0, 100.0 5.0))", shapeBuilder.toWKT()); diff --git a/modules/legacy-geo/src/test/java/org/elasticsearch/legacygeo/mapper/LegacyGeoShapeFieldMapperTests.java b/modules/legacy-geo/src/test/java/org/elasticsearch/legacygeo/mapper/LegacyGeoShapeFieldMapperTests.java index f0bb4b54c7e77..14d347d86fadd 100644 --- a/modules/legacy-geo/src/test/java/org/elasticsearch/legacygeo/mapper/LegacyGeoShapeFieldMapperTests.java +++ b/modules/legacy-geo/src/test/java/org/elasticsearch/legacygeo/mapper/LegacyGeoShapeFieldMapperTests.java @@ -21,6 +21,7 @@ import org.elasticsearch.common.geo.SpatialStrategy; import org.elasticsearch.core.CheckedConsumer; import org.elasticsearch.geometry.Point; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.mapper.DocumentMapper; import org.elasticsearch.index.mapper.MappedFieldType; import org.elasticsearch.index.mapper.Mapper; @@ -108,8 +109,8 @@ protected boolean supportsMeta() { } @Override - protected Version getVersion() { - return VersionUtils.randomPreviousCompatibleVersion(random(), Version.V_8_0_0); + protected IndexVersion getVersion() { + return VersionUtils.randomPreviousCompatibleVersion(random(), Version.V_8_0_0).indexVersion; } public void testLegacySwitches() throws IOException { diff --git a/modules/legacy-geo/src/test/java/org/elasticsearch/legacygeo/mapper/LegacyGeoShapeFieldTypeTests.java b/modules/legacy-geo/src/test/java/org/elasticsearch/legacygeo/mapper/LegacyGeoShapeFieldTypeTests.java index f0e6018b7a9c9..f42b1d5d76118 100644 --- a/modules/legacy-geo/src/test/java/org/elasticsearch/legacygeo/mapper/LegacyGeoShapeFieldTypeTests.java +++ b/modules/legacy-geo/src/test/java/org/elasticsearch/legacygeo/mapper/LegacyGeoShapeFieldTypeTests.java @@ -9,6 +9,7 @@ import org.elasticsearch.Version; import org.elasticsearch.common.geo.SpatialStrategy; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.mapper.FieldTypeTestCase; import org.elasticsearch.index.mapper.MappedFieldType; import org.elasticsearch.index.mapper.MapperBuilderContext; @@ -35,7 +36,7 @@ public void testSetStrategyName() { } public void testFetchSourceValue() throws IOException { - Version version = VersionUtils.randomPreviousCompatibleVersion(random(), Version.V_8_0_0); + IndexVersion version = VersionUtils.randomPreviousCompatibleVersion(random(), Version.V_8_0_0).indexVersion; MappedFieldType mapper = new LegacyGeoShapeFieldMapper.Builder("field", version, false, true).build( MapperBuilderContext.root(false) ).fieldType(); diff --git a/modules/mapper-extras/src/main/java/org/elasticsearch/index/mapper/extras/MatchOnlyTextFieldMapper.java b/modules/mapper-extras/src/main/java/org/elasticsearch/index/mapper/extras/MatchOnlyTextFieldMapper.java index cffa2e9f11b1e..0d84291221906 100644 --- a/modules/mapper-extras/src/main/java/org/elasticsearch/index/mapper/extras/MatchOnlyTextFieldMapper.java +++ b/modules/mapper-extras/src/main/java/org/elasticsearch/index/mapper/extras/MatchOnlyTextFieldMapper.java @@ -27,10 +27,10 @@ import org.apache.lucene.search.TermQuery; import org.apache.lucene.util.BytesRef; import org.apache.lucene.util.IOFunction; -import org.elasticsearch.Version; import org.elasticsearch.common.CheckedIntFunction; import org.elasticsearch.common.lucene.Lucene; import org.elasticsearch.common.unit.Fuzziness; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.analysis.IndexAnalyzers; import org.elasticsearch.index.analysis.NamedAnalyzer; import org.elasticsearch.index.fielddata.FieldDataContext; @@ -91,17 +91,17 @@ public static class Defaults { public static class Builder extends FieldMapper.Builder { - private final Version indexCreatedVersion; + private final IndexVersion indexCreatedVersion; private final Parameter> meta = Parameter.metaParam(); private final TextParams.Analyzers analyzers; public Builder(String name, IndexAnalyzers indexAnalyzers) { - this(name, Version.CURRENT, indexAnalyzers); + this(name, IndexVersion.CURRENT, indexAnalyzers); } - public Builder(String name, Version indexCreatedVersion, IndexAnalyzers indexAnalyzers) { + public Builder(String name, IndexVersion indexCreatedVersion, IndexAnalyzers indexAnalyzers) { super(name); this.indexCreatedVersion = indexCreatedVersion; this.analyzers = new TextParams.Analyzers( @@ -356,7 +356,7 @@ private String storedFieldNameForSyntheticSource() { } } - private final Version indexCreatedVersion; + private final IndexVersion indexCreatedVersion; private final IndexAnalyzers indexAnalyzers; private final NamedAnalyzer indexAnalyzer; private final int positionIncrementGap; diff --git a/modules/mapper-extras/src/main/java/org/elasticsearch/index/mapper/extras/SearchAsYouTypeFieldMapper.java b/modules/mapper-extras/src/main/java/org/elasticsearch/index/mapper/extras/SearchAsYouTypeFieldMapper.java index f7819ba8a34e2..91082a841b3c8 100644 --- a/modules/mapper-extras/src/main/java/org/elasticsearch/index/mapper/extras/SearchAsYouTypeFieldMapper.java +++ b/modules/mapper-extras/src/main/java/org/elasticsearch/index/mapper/extras/SearchAsYouTypeFieldMapper.java @@ -35,8 +35,8 @@ import org.apache.lucene.util.automaton.Automata; import org.apache.lucene.util.automaton.Automaton; import org.apache.lucene.util.automaton.Operations; -import org.elasticsearch.Version; import org.elasticsearch.common.collect.Iterators; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.analysis.AnalyzerScope; import org.elasticsearch.index.analysis.IndexAnalyzers; import org.elasticsearch.index.analysis.NamedAnalyzer; @@ -142,9 +142,9 @@ public static class Builder extends FieldMapper.Builder { private final Parameter> meta = Parameter.metaParam(); - private final Version indexCreatedVersion; + private final IndexVersion indexCreatedVersion; - public Builder(String name, Version indexCreatedVersion, IndexAnalyzers indexAnalyzers) { + public Builder(String name, IndexVersion indexCreatedVersion, IndexAnalyzers indexAnalyzers) { super(name); this.indexCreatedVersion = indexCreatedVersion; this.analyzers = new TextParams.Analyzers( diff --git a/modules/parent-join/src/test/java/org/elasticsearch/join/query/HasChildQueryBuilderTests.java b/modules/parent-join/src/test/java/org/elasticsearch/join/query/HasChildQueryBuilderTests.java index 88c6a6db181d8..10168aee93669 100644 --- a/modules/parent-join/src/test/java/org/elasticsearch/join/query/HasChildQueryBuilderTests.java +++ b/modules/parent-join/src/test/java/org/elasticsearch/join/query/HasChildQueryBuilderTests.java @@ -22,10 +22,10 @@ import org.apache.lucene.search.similarities.Similarity; import org.elasticsearch.ElasticsearchException; import org.elasticsearch.TransportVersion; -import org.elasticsearch.Version; import org.elasticsearch.common.Strings; import org.elasticsearch.common.compress.CompressedXContent; import org.elasticsearch.common.settings.Settings; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.mapper.IdFieldMapper; import org.elasticsearch.index.mapper.MapperService; import org.elasticsearch.index.mapper.Uid; @@ -368,7 +368,7 @@ public void testNonDefaultSimilarity() throws Exception { ScoreMode.None ); LateParsingQuery query = (LateParsingQuery) hasChildQueryBuilder.toQuery(searchExecutionContext); - Similarity expected = SimilarityService.BUILT_IN.get(similarity).apply(Settings.EMPTY, Version.CURRENT, null); + Similarity expected = SimilarityService.BUILT_IN.get(similarity).apply(Settings.EMPTY, IndexVersion.CURRENT, null); assertThat(((PerFieldSimilarityWrapper) query.getSimilarity()).get("custom_string"), instanceOf(expected.getClass())); } diff --git a/modules/percolator/src/main/java/org/elasticsearch/percolator/PercolateQueryBuilder.java b/modules/percolator/src/main/java/org/elasticsearch/percolator/PercolateQueryBuilder.java index 2c0bfd2ea14bd..3bf01f6f7493a 100644 --- a/modules/percolator/src/main/java/org/elasticsearch/percolator/PercolateQueryBuilder.java +++ b/modules/percolator/src/main/java/org/elasticsearch/percolator/PercolateQueryBuilder.java @@ -34,7 +34,6 @@ import org.elasticsearch.ElasticsearchException; import org.elasticsearch.ResourceNotFoundException; import org.elasticsearch.TransportVersion; -import org.elasticsearch.Version; import org.elasticsearch.action.get.GetRequest; import org.elasticsearch.common.bytes.BytesReference; import org.elasticsearch.common.io.stream.InputStreamStreamInput; @@ -46,6 +45,7 @@ import org.elasticsearch.common.xcontent.LoggingDeprecationHandler; import org.elasticsearch.common.xcontent.XContentHelper; import org.elasticsearch.core.RestApiVersion; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.fielddata.FieldDataContext; import org.elasticsearch.index.fielddata.IndexFieldData; import org.elasticsearch.index.fielddata.IndexFieldDataCache; @@ -571,7 +571,7 @@ static IndexSearcher createMultiDocumentSearcher(Analyzer analyzer, Collection

{ LeafReader leafReader = ctx.reader(); @@ -596,8 +596,8 @@ static PercolateQuery.QueryStore createStore(MappedFieldType queryBuilderFieldTy assert valueLength > 0; TransportVersion transportVersion; - if (indexVersion.before(Version.V_8_8_0)) { - transportVersion = TransportVersion.fromId(indexVersion.id); + if (indexVersion.before(IndexVersion.V_8_8_0)) { + transportVersion = TransportVersion.fromId(indexVersion.id()); } else { transportVersion = TransportVersion.readVersion(input); } diff --git a/modules/percolator/src/main/java/org/elasticsearch/percolator/PercolatorFieldMapper.java b/modules/percolator/src/main/java/org/elasticsearch/percolator/PercolatorFieldMapper.java index 051010c832f98..db93a9ad13cbe 100644 --- a/modules/percolator/src/main/java/org/elasticsearch/percolator/PercolatorFieldMapper.java +++ b/modules/percolator/src/main/java/org/elasticsearch/percolator/PercolatorFieldMapper.java @@ -29,7 +29,6 @@ import org.apache.lucene.util.BytesRef; import org.apache.lucene.util.BytesRefBuilder; import org.elasticsearch.TransportVersion; -import org.elasticsearch.Version; import org.elasticsearch.action.support.PlainActionFuture; import org.elasticsearch.common.ParsingException; import org.elasticsearch.common.bytes.BytesReference; @@ -39,6 +38,7 @@ import org.elasticsearch.common.settings.Setting; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.core.Tuple; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.mapper.BinaryFieldMapper; import org.elasticsearch.index.mapper.DocumentParserContext; import org.elasticsearch.index.mapper.FieldMapper; @@ -108,14 +108,14 @@ static class Builder extends FieldMapper.Builder { private final Supplier searchExecutionContext; private final boolean mapUnmappedFieldsAsText; - private final Version indexCreatedVersion; + private final IndexVersion indexCreatedVersion; private final Supplier clusterTransportVersion; Builder( String fieldName, Supplier searchExecutionContext, boolean mapUnmappedFieldsAsText, - Version indexCreatedVersion, + IndexVersion indexCreatedVersion, Supplier clusterTransportVersion ) { super(fieldName); @@ -175,7 +175,11 @@ public PercolatorFieldMapper build(MapperBuilderContext context) { ); } - static KeywordFieldMapper createExtractQueryFieldBuilder(String name, MapperBuilderContext context, Version indexCreatedVersion) { + static KeywordFieldMapper createExtractQueryFieldBuilder( + String name, + MapperBuilderContext context, + IndexVersion indexCreatedVersion + ) { KeywordFieldMapper.Builder queryMetadataFieldBuilder = new KeywordFieldMapper.Builder(name, indexCreatedVersion); queryMetadataFieldBuilder.docValues(false); return queryMetadataFieldBuilder.build(context); @@ -193,7 +197,7 @@ static RangeFieldMapper createExtractedRangeFieldBuilder(String name, RangeType return builder.build(context); } - static NumberFieldMapper createMinimumShouldMatchField(MapperBuilderContext context, Version indexCreatedVersion) { + static NumberFieldMapper createMinimumShouldMatchField(MapperBuilderContext context, IndexVersion indexCreatedVersion) { NumberFieldMapper.Builder builder = NumberFieldMapper.Builder.docValuesOnly( MINIMUM_SHOULD_MATCH_FIELD_NAME, NumberFieldMapper.NumberType.INTEGER, @@ -257,10 +261,10 @@ Query percolateQuery( List documents, IndexSearcher searcher, boolean excludeNestedDocuments, - Version indexVersion + IndexVersion indexVersion ) throws IOException { IndexReader indexReader = searcher.getIndexReader(); - Tuple t = createCandidateQuery(indexReader, indexVersion); + Tuple t = createCandidateQuery(indexReader); Query candidateQuery = t.v1(); boolean canUseMinimumShouldMatchField = t.v2(); @@ -282,7 +286,7 @@ Query percolateQuery( return new PercolateQuery(name, queryStore, documents, candidateQuery, searcher, filter, verifiedMatchesQuery); } - Tuple createCandidateQuery(IndexReader indexReader, Version indexVersion) throws IOException { + Tuple createCandidateQuery(IndexReader indexReader) throws IOException { Tuple, Map>> t = extractTermsAndRanges(indexReader); List extractedTerms = t.v1(); Map> encodedPointValuesByField = t.v2(); @@ -360,7 +364,7 @@ Tuple, Map>> extractTermsAndRanges(IndexRead private final NumberFieldMapper minimumShouldMatchFieldMapper; private final RangeFieldMapper rangeFieldMapper; private final boolean mapUnmappedFieldsAsText; - private final Version indexCreatedVersion; + private final IndexVersion indexCreatedVersion; private final Supplier clusterTransportVersion; PercolatorFieldMapper( @@ -375,7 +379,7 @@ Tuple, Map>> extractTermsAndRanges(IndexRead RangeFieldMapper rangeFieldMapper, NumberFieldMapper minimumShouldMatchFieldMapper, boolean mapUnmappedFieldsAsText, - Version indexCreatedVersion, + IndexVersion indexCreatedVersion, Supplier clusterTransportVersion ) { super(simpleName, mappedFieldType, multiFields, copyTo); @@ -408,7 +412,7 @@ public void parse(DocumentParserContext context) throws IOException { Rewriteable.rewriteAndFetch(queryBuilder, executionContext, future); queryBuilder = future.actionGet(); - Version indexVersion = context.indexSettings().getIndexVersionCreated(); + IndexVersion indexVersion = context.indexSettings().getIndexVersionCreated(); createQueryBuilderField(indexVersion, clusterTransportVersion.get(), queryBuilderField, queryBuilder, context); QueryBuilder queryBuilderForProcessing = queryBuilder.rewrite(new SearchExecutionContext(executionContext)); @@ -437,7 +441,7 @@ static QueryBuilder parseQueryBuilder(DocumentParserContext context) { } static void createQueryBuilderField( - Version indexVersion, + IndexVersion indexVersion, TransportVersion clusterTransportVersion, BinaryFieldMapper qbField, QueryBuilder queryBuilder, @@ -447,10 +451,10 @@ static void createQueryBuilderField( ByteArrayOutputStream stream = new ByteArrayOutputStream(); OutputStreamStreamOutput out = new OutputStreamStreamOutput(stream) ) { - if (indexVersion.before(Version.V_8_8_0)) { + if (indexVersion.before(IndexVersion.V_8_8_0)) { // just use the index version directly - // there's a direct mapping from Version to TransportVersion before 8.8.0 - out.setTransportVersion(TransportVersion.fromId(indexVersion.id)); + // there's a direct mapping from IndexVersion to TransportVersion before 8.8.0 + out.setTransportVersion(TransportVersion.fromId(indexVersion.id())); } else { // write the version id to the stream first TransportVersion.writeVersion(clusterTransportVersion, out); diff --git a/modules/percolator/src/main/java/org/elasticsearch/percolator/PercolatorMatchedSlotSubFetchPhase.java b/modules/percolator/src/main/java/org/elasticsearch/percolator/PercolatorMatchedSlotSubFetchPhase.java index 45c9b13fbb603..43f365a2a722b 100644 --- a/modules/percolator/src/main/java/org/elasticsearch/percolator/PercolatorMatchedSlotSubFetchPhase.java +++ b/modules/percolator/src/main/java/org/elasticsearch/percolator/PercolatorMatchedSlotSubFetchPhase.java @@ -20,9 +20,9 @@ import org.apache.lucene.search.Weight; import org.apache.lucene.util.BitSet; import org.apache.lucene.util.BitSetIterator; -import org.elasticsearch.Version; import org.elasticsearch.common.document.DocumentField; import org.elasticsearch.common.lucene.search.Queries; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.search.fetch.FetchContext; import org.elasticsearch.search.fetch.FetchSubPhase; import org.elasticsearch.search.fetch.FetchSubPhaseProcessor; @@ -107,7 +107,7 @@ static class PercolateContext { final boolean singlePercolateQuery; final int[] rootDocsBySlot; - PercolateContext(PercolateQuery pq, boolean singlePercolateQuery, Version indexVersionCreated) throws IOException { + PercolateContext(PercolateQuery pq, boolean singlePercolateQuery, IndexVersion indexVersionCreated) throws IOException { this.percolateQuery = pq; this.singlePercolateQuery = singlePercolateQuery; IndexSearcher percolatorIndexSearcher = percolateQuery.getPercolatorIndexSearcher(); @@ -128,7 +128,7 @@ String fieldName() { return singlePercolateQuery ? FIELD_NAME_PREFIX : FIELD_NAME_PREFIX + "_" + percolateQuery.getName(); } - Query filterNestedDocs(Query in, Version indexVersionCreated) { + Query filterNestedDocs(Query in, IndexVersion indexVersionCreated) { if (rootDocsBySlot != null) { // Ensures that we filter out nested documents return new BooleanQuery.Builder().add(in, BooleanClause.Occur.MUST) diff --git a/modules/percolator/src/test/java/org/elasticsearch/percolator/CandidateQueryTests.java b/modules/percolator/src/test/java/org/elasticsearch/percolator/CandidateQueryTests.java index bf20674e64aa5..65f725b126f84 100644 --- a/modules/percolator/src/test/java/org/elasticsearch/percolator/CandidateQueryTests.java +++ b/modules/percolator/src/test/java/org/elasticsearch/percolator/CandidateQueryTests.java @@ -65,7 +65,6 @@ import org.apache.lucene.store.ByteBuffersDirectory; import org.apache.lucene.store.Directory; import org.apache.lucene.util.BytesRef; -import org.elasticsearch.Version; import org.elasticsearch.common.Strings; import org.elasticsearch.common.bytes.BytesArray; import org.elasticsearch.common.bytes.BytesReference; @@ -75,6 +74,7 @@ import org.elasticsearch.common.settings.Settings; import org.elasticsearch.core.CheckedFunction; import org.elasticsearch.index.IndexService; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.mapper.DocumentParserContext; import org.elasticsearch.index.mapper.LuceneDocument; import org.elasticsearch.index.mapper.MappedFieldType; @@ -85,7 +85,7 @@ import org.elasticsearch.lucene.queries.BlendedTermQuery; import org.elasticsearch.plugins.Plugin; import org.elasticsearch.test.ESSingleNodeTestCase; -import org.elasticsearch.test.VersionUtils; +import org.elasticsearch.test.index.IndexVersionUtils; import org.elasticsearch.xcontent.XContentFactory; import org.junit.After; import org.junit.Before; @@ -629,7 +629,7 @@ public void testRangeQueries() throws Exception { IndexSearcher shardSearcher = newSearcher(directoryReader); shardSearcher.setQueryCache(null); - Version v = VersionUtils.randomIndexCompatibleVersion(random()); + IndexVersion v = IndexVersionUtils.randomCompatibleVersion(random()); MemoryIndex memoryIndex = MemoryIndex.fromDocument(Collections.singleton(new IntPoint("int_field", 3)), new WhitespaceAnalyzer()); IndexSearcher percolateSearcher = memoryIndex.createSearcher(); Query query = fieldType.percolateQuery( @@ -827,7 +827,7 @@ public void testPercolateMatchAll() throws Exception { Collections.singletonList(new BytesArray("{}")), percolateSearcher, false, - Version.CURRENT + IndexVersion.CURRENT ); TopDocs topDocs = shardSearcher.search(query, 10, new Sort(SortField.FIELD_DOC)); assertEquals(3L, topDocs.totalHits.value); @@ -866,7 +866,7 @@ public void testFunctionScoreQuery() throws Exception { Collections.singletonList(new BytesArray("{}")), percolateSearcher, false, - Version.CURRENT + IndexVersion.CURRENT ); TopDocs topDocs = shardSearcher.search(query, 10, new Sort(SortField.FIELD_DOC)); assertEquals(2L, topDocs.totalHits.value); @@ -895,7 +895,7 @@ public void testPercolateSmallAndLargeDocument() throws Exception { IndexSearcher shardSearcher = newSearcher(directoryReader); shardSearcher.setQueryCache(null); - Version v = Version.CURRENT; + IndexVersion v = IndexVersion.CURRENT; try (Directory directory = new ByteBuffersDirectory()) { try (IndexWriter iw = new IndexWriter(directory, newIndexWriterConfig())) { @@ -1018,7 +1018,7 @@ public void testDuplicatedClauses() throws Exception { IndexSearcher shardSearcher = newSearcher(directoryReader); shardSearcher.setQueryCache(null); - Version v = Version.CURRENT; + IndexVersion v = IndexVersion.CURRENT; List sources = Collections.singletonList(new BytesArray("{}")); MemoryIndex memoryIndex = new MemoryIndex(); @@ -1052,7 +1052,7 @@ public void testDuplicatedClauses2() throws Exception { IndexSearcher shardSearcher = newSearcher(directoryReader); shardSearcher.setQueryCache(null); - Version v = Version.CURRENT; + IndexVersion v = IndexVersion.CURRENT; List sources = Collections.singletonList(new BytesArray("{}")); MemoryIndex memoryIndex = new MemoryIndex(); @@ -1101,7 +1101,7 @@ public void testMsmAndRanges_disjunction() throws Exception { IndexSearcher shardSearcher = newSearcher(directoryReader); shardSearcher.setQueryCache(null); - Version v = Version.CURRENT; + IndexVersion v = IndexVersion.CURRENT; List sources = Collections.singletonList(new BytesArray("{}")); Document document = new Document(); @@ -1125,7 +1125,7 @@ private void duelRun(PercolateQuery.QueryStore percolateQueryStore, MemoryIndex Collections.singletonList(new BytesArray("{}")), percolateSearcher, false, - Version.CURRENT + IndexVersion.CURRENT ); Query query = requireScore ? percolateQuery : new ConstantScoreQuery(percolateQuery); TopDocs topDocs = shardSearcher.search(query, 100); @@ -1211,7 +1211,7 @@ private TopDocs executeQuery(PercolateQuery.QueryStore percolateQueryStore, Memo Collections.singletonList(new BytesArray("{}")), percolateSearcher, false, - Version.CURRENT + IndexVersion.CURRENT ); return shardSearcher.search(percolateQuery, 10); } diff --git a/modules/percolator/src/test/java/org/elasticsearch/percolator/PercolatorFieldMapperTests.java b/modules/percolator/src/test/java/org/elasticsearch/percolator/PercolatorFieldMapperTests.java index ab49c3112c0f7..6a77f6c97b0f4 100644 --- a/modules/percolator/src/test/java/org/elasticsearch/percolator/PercolatorFieldMapperTests.java +++ b/modules/percolator/src/test/java/org/elasticsearch/percolator/PercolatorFieldMapperTests.java @@ -30,7 +30,6 @@ import org.apache.lucene.search.join.ScoreMode; import org.apache.lucene.util.BytesRef; import org.elasticsearch.TransportVersion; -import org.elasticsearch.Version; import org.elasticsearch.action.support.PlainActionFuture; import org.elasticsearch.common.Strings; import org.elasticsearch.common.bytes.BytesArray; @@ -413,7 +412,7 @@ public void testCreateCandidateQuery() throws Exception { memoryIndex.addField(new LongPoint("field2", 10L), new WhitespaceAnalyzer()); IndexReader indexReader = memoryIndex.createSearcher().getIndexReader(); - Tuple t = fieldType.createCandidateQuery(indexReader, Version.CURRENT); + Tuple t = fieldType.createCandidateQuery(indexReader); assertTrue(t.v2()); assertEquals(2, t.v1().clauses().size()); assertThat(t.v1().clauses().get(0).getQuery(), instanceOf(CoveringQuery.class)); @@ -422,7 +421,7 @@ public void testCreateCandidateQuery() throws Exception { // Now push it over the edge, so that it falls back using TermInSetQuery memoryIndex.addField("field2", "value", new WhitespaceAnalyzer()); indexReader = memoryIndex.createSearcher().getIndexReader(); - t = fieldType.createCandidateQuery(indexReader, Version.CURRENT); + t = fieldType.createCandidateQuery(indexReader); assertFalse(t.v2()); assertEquals(3, t.v1().clauses().size()); TermInSetQuery terms = (TermInSetQuery) t.v1().clauses().get(0).getQuery(); diff --git a/modules/percolator/src/test/java/org/elasticsearch/percolator/PercolatorMatchedSlotSubFetchPhaseTests.java b/modules/percolator/src/test/java/org/elasticsearch/percolator/PercolatorMatchedSlotSubFetchPhaseTests.java index 15b77ad304c54..e0424af9a4db4 100644 --- a/modules/percolator/src/test/java/org/elasticsearch/percolator/PercolatorMatchedSlotSubFetchPhaseTests.java +++ b/modules/percolator/src/test/java/org/elasticsearch/percolator/PercolatorMatchedSlotSubFetchPhaseTests.java @@ -23,7 +23,7 @@ import org.apache.lucene.store.Directory; import org.apache.lucene.tests.index.RandomIndexWriter; import org.apache.lucene.util.FixedBitSet; -import org.elasticsearch.Version; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.mapper.SeqNoFieldMapper; import org.elasticsearch.index.query.SearchExecutionContext; import org.elasticsearch.search.SearchHit; @@ -75,7 +75,7 @@ public void testHitsExecute() throws Exception { when(sc.query()).thenReturn(percolateQuery); SearchExecutionContext sec = mock(SearchExecutionContext.class); when(sc.getSearchExecutionContext()).thenReturn(sec); - when(sec.indexVersionCreated()).thenReturn(Version.CURRENT); + when(sec.indexVersionCreated()).thenReturn(IndexVersion.CURRENT); FetchSubPhaseProcessor processor = phase.getProcessor(sc); assertNotNull(processor); @@ -106,7 +106,7 @@ public void testHitsExecute() throws Exception { when(sc.query()).thenReturn(percolateQuery); SearchExecutionContext sec = mock(SearchExecutionContext.class); when(sc.getSearchExecutionContext()).thenReturn(sec); - when(sec.indexVersionCreated()).thenReturn(Version.CURRENT); + when(sec.indexVersionCreated()).thenReturn(IndexVersion.CURRENT); FetchSubPhaseProcessor processor = phase.getProcessor(sc); assertNotNull(processor); @@ -136,7 +136,7 @@ public void testHitsExecute() throws Exception { when(sc.query()).thenReturn(percolateQuery); SearchExecutionContext sec = mock(SearchExecutionContext.class); when(sc.getSearchExecutionContext()).thenReturn(sec); - when(sec.indexVersionCreated()).thenReturn(Version.CURRENT); + when(sec.indexVersionCreated()).thenReturn(IndexVersion.CURRENT); FetchSubPhaseProcessor processor = phase.getProcessor(sc); assertNotNull(processor); diff --git a/modules/percolator/src/test/java/org/elasticsearch/percolator/QueryBuilderStoreTests.java b/modules/percolator/src/test/java/org/elasticsearch/percolator/QueryBuilderStoreTests.java index 6a8d2d607fd8e..e9d8e2a78b3ae 100644 --- a/modules/percolator/src/test/java/org/elasticsearch/percolator/QueryBuilderStoreTests.java +++ b/modules/percolator/src/test/java/org/elasticsearch/percolator/QueryBuilderStoreTests.java @@ -18,10 +18,10 @@ import org.apache.lucene.search.TermQuery; import org.apache.lucene.store.Directory; import org.elasticsearch.TransportVersion; -import org.elasticsearch.Version; import org.elasticsearch.common.io.stream.NamedWriteableRegistry; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.core.CheckedFunction; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.fielddata.plain.BytesBinaryIndexFieldData; import org.elasticsearch.index.mapper.BinaryFieldMapper; import org.elasticsearch.index.mapper.DocumentParserContext; @@ -70,7 +70,7 @@ public void testStoringQueryBuilders() throws IOException { queryBuilders[i] = new TermQueryBuilder(randomAlphaOfLength(4), randomAlphaOfLength(8)); DocumentParserContext documentParserContext = new TestDocumentParserContext(); PercolatorFieldMapper.createQueryBuilderField( - Version.CURRENT, + IndexVersion.CURRENT, TransportVersion.current(), fieldMapper, queryBuilders[i], @@ -81,7 +81,7 @@ public void testStoringQueryBuilders() throws IOException { } SearchExecutionContext searchExecutionContext = mock(SearchExecutionContext.class); - when(searchExecutionContext.indexVersionCreated()).thenReturn(Version.CURRENT); + when(searchExecutionContext.indexVersionCreated()).thenReturn(IndexVersion.CURRENT); when(searchExecutionContext.getWriteableRegistry()).thenReturn(writableRegistry()); when(searchExecutionContext.getParserConfig()).thenReturn(parserConfig()); when(searchExecutionContext.getForField(fieldMapper.fieldType(), fielddataOperation)).thenReturn( diff --git a/plugins/mapper-annotated-text/src/main/java/org/elasticsearch/index/mapper/annotatedtext/AnnotatedTextFieldMapper.java b/plugins/mapper-annotated-text/src/main/java/org/elasticsearch/index/mapper/annotatedtext/AnnotatedTextFieldMapper.java index bb9879b124f79..ec98bd163d635 100644 --- a/plugins/mapper-annotated-text/src/main/java/org/elasticsearch/index/mapper/annotatedtext/AnnotatedTextFieldMapper.java +++ b/plugins/mapper-annotated-text/src/main/java/org/elasticsearch/index/mapper/annotatedtext/AnnotatedTextFieldMapper.java @@ -21,7 +21,7 @@ import org.apache.lucene.document.FieldType; import org.apache.lucene.index.IndexOptions; import org.elasticsearch.ElasticsearchParseException; -import org.elasticsearch.Version; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.analysis.AnalyzerScope; import org.elasticsearch.index.analysis.IndexAnalyzers; import org.elasticsearch.index.analysis.NamedAnalyzer; @@ -86,9 +86,9 @@ public static class Builder extends FieldMapper.Builder { private final Parameter> meta = Parameter.metaParam(); - private final Version indexCreatedVersion; + private final IndexVersion indexCreatedVersion; - public Builder(String name, Version indexCreatedVersion, IndexAnalyzers indexAnalyzers) { + public Builder(String name, IndexVersion indexCreatedVersion, IndexAnalyzers indexAnalyzers) { super(name); this.indexCreatedVersion = indexCreatedVersion; this.analyzers = new TextParams.Analyzers( diff --git a/plugins/mapper-annotated-text/src/test/java/org/elasticsearch/index/mapper/annotatedtext/AnnotatedTextFieldTypeTests.java b/plugins/mapper-annotated-text/src/test/java/org/elasticsearch/index/mapper/annotatedtext/AnnotatedTextFieldTypeTests.java index e7a1705a4d42c..efb06e5dd7510 100644 --- a/plugins/mapper-annotated-text/src/test/java/org/elasticsearch/index/mapper/annotatedtext/AnnotatedTextFieldTypeTests.java +++ b/plugins/mapper-annotated-text/src/test/java/org/elasticsearch/index/mapper/annotatedtext/AnnotatedTextFieldTypeTests.java @@ -11,7 +11,7 @@ import org.apache.lucene.queries.intervals.Intervals; import org.apache.lucene.queries.intervals.IntervalsSource; import org.apache.lucene.util.BytesRef; -import org.elasticsearch.Version; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.mapper.FieldTypeTestCase; import org.elasticsearch.index.mapper.MappedFieldType; import org.elasticsearch.index.mapper.MapperBuilderContext; @@ -29,9 +29,9 @@ public void testIntervals() throws IOException { } public void testFetchSourceValue() throws IOException { - MappedFieldType fieldType = new AnnotatedTextFieldMapper.Builder("field", Version.CURRENT, createDefaultIndexAnalyzers()).build( - MapperBuilderContext.root(false) - ).fieldType(); + MappedFieldType fieldType = new AnnotatedTextFieldMapper.Builder("field", IndexVersion.CURRENT, createDefaultIndexAnalyzers()) + .build(MapperBuilderContext.root(false)) + .fieldType(); assertEquals(List.of("value"), fetchSourceValue(fieldType, "value")); assertEquals(List.of("42"), fetchSourceValue(fieldType, 42L)); diff --git a/server/src/internalClusterTest/java/org/elasticsearch/indices/recovery/IndexRecoveryIT.java b/server/src/internalClusterTest/java/org/elasticsearch/indices/recovery/IndexRecoveryIT.java index c85e4880b5b33..0ae89ebd06a75 100644 --- a/server/src/internalClusterTest/java/org/elasticsearch/indices/recovery/IndexRecoveryIT.java +++ b/server/src/internalClusterTest/java/org/elasticsearch/indices/recovery/IndexRecoveryIT.java @@ -69,6 +69,7 @@ import org.elasticsearch.index.Index; import org.elasticsearch.index.IndexService; import org.elasticsearch.index.IndexSettings; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.analysis.AbstractTokenFilterFactory; import org.elasticsearch.index.analysis.TokenFilterFactory; import org.elasticsearch.index.engine.Engine; @@ -1722,7 +1723,7 @@ private long getLocalCheckpointOfSafeCommit(IndexCommit safeIndexCommit) throws final Query query = new BooleanQuery.Builder().add( LongPoint.newRangeQuery(SeqNoFieldMapper.NAME, commitLocalCheckpoint + 1, Long.MAX_VALUE), BooleanClause.Occur.MUST - ).add(Queries.newNonNestedFilter(Version.CURRENT), BooleanClause.Occur.MUST).build(); + ).add(Queries.newNonNestedFilter(IndexVersion.CURRENT), BooleanClause.Occur.MUST).build(); final Weight weight = searcher.createWeight(searcher.rewrite(query), ScoreMode.COMPLETE_NO_SCORES, 1.0f); for (LeafReaderContext leaf : directoryReader.leaves()) { final Scorer scorer = weight.scorer(leaf); diff --git a/server/src/main/java/org/elasticsearch/cluster/metadata/IndexMetadataVerifier.java b/server/src/main/java/org/elasticsearch/cluster/metadata/IndexMetadataVerifier.java index 68e87a88335a0..a96b223b040b8 100644 --- a/server/src/main/java/org/elasticsearch/cluster/metadata/IndexMetadataVerifier.java +++ b/server/src/main/java/org/elasticsearch/cluster/metadata/IndexMetadataVerifier.java @@ -19,6 +19,7 @@ import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.xcontent.LoggingDeprecationHandler; import org.elasticsearch.index.IndexSettings; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.analysis.AnalyzerScope; import org.elasticsearch.index.analysis.NamedAnalyzer; import org.elasticsearch.index.mapper.MapperRegistry; @@ -143,14 +144,14 @@ private void checkMappingsCompatibility(IndexMetadata indexMetadata) { IndexSettings indexSettings = new IndexSettings(indexMetadata, this.settings); - final Map> similarityMap = new AbstractMap<>() { + final Map> similarityMap = new AbstractMap<>() { @Override public boolean containsKey(Object key) { return true; } @Override - public TriFunction get(Object key) { + public TriFunction get(Object key) { assert key instanceof String : "key must be a string but was: " + key.getClass(); return (settings, version, scriptService) -> new BM25Similarity(); } @@ -158,7 +159,7 @@ public TriFunction get(Object key) // this entrySet impl isn't fully correct but necessary as SimilarityService will iterate // over all similarities @Override - public Set>> entrySet() { + public Set>> entrySet() { return Collections.emptySet(); } }; diff --git a/server/src/main/java/org/elasticsearch/common/lucene/search/Queries.java b/server/src/main/java/org/elasticsearch/common/lucene/search/Queries.java index 52180210cffee..ea008d5910a6f 100644 --- a/server/src/main/java/org/elasticsearch/common/lucene/search/Queries.java +++ b/server/src/main/java/org/elasticsearch/common/lucene/search/Queries.java @@ -19,8 +19,8 @@ import org.apache.lucene.search.Query; import org.apache.lucene.util.BytesRef; import org.elasticsearch.ElasticsearchException; -import org.elasticsearch.Version; import org.elasticsearch.core.Nullable; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.mapper.NestedPathFieldMapper; import org.elasticsearch.index.mapper.SeqNoFieldMapper; @@ -53,13 +53,13 @@ public static Query newLenientFieldQuery(String field, RuntimeException e) { return Queries.newMatchNoDocsQuery("failed [" + field + "] query, caused by " + message); } - private static final Version NESTED_DOCS_IDENTIFIED_VIA_PRIMARY_TERMS_VERSION = Version.fromString("6.1.0"); + private static final IndexVersion NESTED_DOCS_IDENTIFIED_VIA_PRIMARY_TERMS_VERSION = IndexVersion.fromId(6010099); /** * Creates a new nested docs query * @param indexVersionCreated the index version created since newer indices can identify a parent field more efficiently */ - public static Query newNestedFilter(Version indexVersionCreated) { + public static Query newNestedFilter(IndexVersion indexVersionCreated) { if (indexVersionCreated.onOrAfter(NESTED_DOCS_IDENTIFIED_VIA_PRIMARY_TERMS_VERSION)) { return not(newNonNestedFilter(indexVersionCreated)); } else { @@ -71,7 +71,7 @@ public static Query newNestedFilter(Version indexVersionCreated) { * Creates a new non-nested docs query * @param indexVersionCreated the index version created since newer indices can identify a parent field more efficiently */ - public static Query newNonNestedFilter(Version indexVersionCreated) { + public static Query newNonNestedFilter(IndexVersion indexVersionCreated) { if (indexVersionCreated.onOrAfter(NESTED_DOCS_IDENTIFIED_VIA_PRIMARY_TERMS_VERSION)) { return new FieldExistsQuery(SeqNoFieldMapper.PRIMARY_TERM_NAME); } else { diff --git a/server/src/main/java/org/elasticsearch/common/lucene/search/function/ScriptScoreQuery.java b/server/src/main/java/org/elasticsearch/common/lucene/search/function/ScriptScoreQuery.java index 77154eda0a649..14ca16affe7e7 100644 --- a/server/src/main/java/org/elasticsearch/common/lucene/search/function/ScriptScoreQuery.java +++ b/server/src/main/java/org/elasticsearch/common/lucene/search/function/ScriptScoreQuery.java @@ -24,7 +24,7 @@ import org.apache.lucene.search.TwoPhaseIterator; import org.apache.lucene.search.Weight; import org.apache.lucene.util.Bits; -import org.elasticsearch.Version; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.script.DocValuesDocReader; import org.elasticsearch.script.ScoreScript; import org.elasticsearch.script.ScoreScript.ExplanationHolder; @@ -45,7 +45,7 @@ public class ScriptScoreQuery extends Query { private final Float minScore; private final String indexName; private final int shardId; - private final Version indexVersion; + private final IndexVersion indexVersion; public ScriptScoreQuery( Query subQuery, @@ -55,7 +55,7 @@ public ScriptScoreQuery( Float minScore, String indexName, int shardId, - Version indexVersion + IndexVersion indexVersion ) { this.subQuery = subQuery; this.script = script; diff --git a/server/src/main/java/org/elasticsearch/common/time/DateFormatter.java b/server/src/main/java/org/elasticsearch/common/time/DateFormatter.java index fc376d6cdd012..00c67f39b756a 100644 --- a/server/src/main/java/org/elasticsearch/common/time/DateFormatter.java +++ b/server/src/main/java/org/elasticsearch/common/time/DateFormatter.java @@ -8,8 +8,8 @@ package org.elasticsearch.common.time; -import org.elasticsearch.Version; import org.elasticsearch.common.Strings; +import org.elasticsearch.index.IndexVersion; import java.time.Instant; import java.time.ZoneId; @@ -100,10 +100,10 @@ default String formatMillis(long millis) { DateMathParser toDateMathParser(); static DateFormatter forPattern(String input) { - return forPattern(input, Version.CURRENT); + return forPattern(input, IndexVersion.CURRENT); } - static DateFormatter forPattern(String input, Version supportedVersion) { + static DateFormatter forPattern(String input, IndexVersion supportedVersion) { if (Strings.hasLength(input) == false) { throw new IllegalArgumentException("No date pattern provided"); } @@ -119,7 +119,7 @@ static DateFormatter forPattern(String input, Version supportedVersion) { List formatters = new ArrayList<>(patterns.length); for (String pattern : patterns) { // make sure we still support camel case for indices created before 8.0 - if (supportedVersion.before(Version.V_8_0_0)) { + if (supportedVersion.before(IndexVersion.V_8_0_0)) { pattern = LegacyFormatNames.camelCaseToSnakeCase(pattern); } formatters.add(DateFormatters.forPattern(pattern)); diff --git a/server/src/main/java/org/elasticsearch/index/IndexModule.java b/server/src/main/java/org/elasticsearch/index/IndexModule.java index 9162b9403701b..11f7b07f6904c 100644 --- a/server/src/main/java/org/elasticsearch/index/IndexModule.java +++ b/server/src/main/java/org/elasticsearch/index/IndexModule.java @@ -20,7 +20,6 @@ import org.apache.lucene.store.MMapDirectory; import org.apache.lucene.util.Constants; import org.apache.lucene.util.SetOnce; -import org.elasticsearch.Version; import org.elasticsearch.client.internal.Client; import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver; import org.elasticsearch.cluster.routing.ShardRouting; @@ -167,7 +166,7 @@ public interface DirectoryWrapper { private final SetOnce>> indexReaderWrapper = new SetOnce<>(); private final Set indexEventListeners = new HashSet<>(); - private final Map> similarities = new HashMap<>(); + private final Map> similarities = new HashMap<>(); private final Map directoryFactories; private final SetOnce> forceQueryCacheProvider = new SetOnce<>(); private final List searchOperationListeners = new ArrayList<>(); @@ -339,7 +338,7 @@ public void addIndexOperationListener(IndexingOperationListener listener) { * @param name Name of the SimilarityProvider * @param similarity SimilarityProvider to register */ - public void addSimilarity(String name, TriFunction similarity) { + public void addSimilarity(String name, TriFunction similarity) { ensureNotFrozen(); if (similarities.containsKey(name) || SimilarityService.BUILT_IN.containsKey(name)) { throw new IllegalArgumentException("similarity for name: [" + name + " is already registered"); diff --git a/server/src/main/java/org/elasticsearch/index/IndexSettings.java b/server/src/main/java/org/elasticsearch/index/IndexSettings.java index c479febbbf3c0..2416d3a8b75af 100644 --- a/server/src/main/java/org/elasticsearch/index/IndexSettings.java +++ b/server/src/main/java/org/elasticsearch/index/IndexSettings.java @@ -10,7 +10,6 @@ import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.util.Strings; import org.apache.lucene.index.MergePolicy; -import org.elasticsearch.Version; import org.elasticsearch.cluster.metadata.IndexMetadata; import org.elasticsearch.cluster.node.DiscoveryNode; import org.elasticsearch.cluster.routing.IndexRouting; @@ -975,8 +974,8 @@ public String customDataPath() { * Returns the version the index was created on. * @see IndexMetadata#SETTING_VERSION_CREATED */ - public Version getIndexVersionCreated() { - return version.toVersion(); + public IndexVersion getIndexVersionCreated() { + return version; } /** diff --git a/server/src/main/java/org/elasticsearch/index/IndexSortConfig.java b/server/src/main/java/org/elasticsearch/index/IndexSortConfig.java index 54753b2a81e83..3088b81d03338 100644 --- a/server/src/main/java/org/elasticsearch/index/IndexSortConfig.java +++ b/server/src/main/java/org/elasticsearch/index/IndexSortConfig.java @@ -12,7 +12,6 @@ import org.apache.lucene.search.SortField; import org.apache.lucene.search.SortedNumericSortField; import org.apache.lucene.search.SortedSetSortField; -import org.elasticsearch.Version; import org.elasticsearch.common.logging.DeprecationCategory; import org.elasticsearch.common.logging.DeprecationLogger; import org.elasticsearch.common.settings.Setting; @@ -133,7 +132,7 @@ private static MultiValueMode parseMultiValueMode(String value) { // visible for tests final FieldSortSpec[] sortSpecs; - private final Version indexCreatedVersion; + private final IndexVersion indexCreatedVersion; private final String indexName; private final IndexMode indexMode; @@ -221,7 +220,7 @@ public Sort buildIndexSort( throw new IllegalArgumentException(err); } if (Objects.equals(ft.name(), sortSpec.field) == false) { - if (this.indexCreatedVersion.onOrAfter(Version.V_7_13_0)) { + if (this.indexCreatedVersion.onOrAfter(IndexVersion.V_7_13_0)) { throw new IllegalArgumentException("Cannot use alias [" + sortSpec.field + "] as an index sort field"); } else { DEPRECATION_LOGGER.warn( diff --git a/server/src/main/java/org/elasticsearch/index/analysis/AnalysisRegistry.java b/server/src/main/java/org/elasticsearch/index/analysis/AnalysisRegistry.java index 9a185bc584066..863b1d6c9e83a 100644 --- a/server/src/main/java/org/elasticsearch/index/analysis/AnalysisRegistry.java +++ b/server/src/main/java/org/elasticsearch/index/analysis/AnalysisRegistry.java @@ -92,7 +92,7 @@ public AnalysisRegistry( private static Settings getSettingsFromIndexSettings(IndexSettings indexSettings, String groupName) { Settings settings = indexSettings.getSettings().getAsSettings(groupName); if (settings.isEmpty()) { - settings = Settings.builder().put(IndexMetadata.SETTING_VERSION_CREATED, indexSettings.getIndexVersionCreated()).build(); + settings = Settings.builder().put(IndexMetadata.SETTING_VERSION_CREATED, indexSettings.getIndexVersionCreated().id()).build(); } return settings; } @@ -452,7 +452,9 @@ private Map buildMapping( Map> providerMap, Map> defaultInstance ) throws IOException { - Settings defaultSettings = Settings.builder().put(IndexMetadata.SETTING_VERSION_CREATED, settings.getIndexVersionCreated()).build(); + Settings defaultSettings = Settings.builder() + .put(IndexMetadata.SETTING_VERSION_CREATED, settings.getIndexVersionCreated().id()) + .build(); Map factories = new HashMap<>(); for (Map.Entry entry : settingsMap.entrySet()) { String name = entry.getKey(); diff --git a/server/src/main/java/org/elasticsearch/index/analysis/PreBuiltAnalyzerProviderFactory.java b/server/src/main/java/org/elasticsearch/index/analysis/PreBuiltAnalyzerProviderFactory.java index 85df6770cb4de..645e679f9909f 100644 --- a/server/src/main/java/org/elasticsearch/index/analysis/PreBuiltAnalyzerProviderFactory.java +++ b/server/src/main/java/org/elasticsearch/index/analysis/PreBuiltAnalyzerProviderFactory.java @@ -14,6 +14,7 @@ import org.elasticsearch.core.IOUtils; import org.elasticsearch.env.Environment; import org.elasticsearch.index.IndexSettings; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.indices.analysis.PreBuiltAnalyzers; import org.elasticsearch.indices.analysis.PreBuiltCacheFactory; @@ -49,8 +50,8 @@ public PreBuiltAnalyzerProviderFactory(String name, PreBuiltCacheFactory.Caching @Override public AnalyzerProvider get(IndexSettings indexSettings, Environment environment, String name, Settings settings) throws IOException { - Version versionCreated = indexSettings.getIndexVersionCreated(); - if (Version.CURRENT.equals(versionCreated) == false) { + IndexVersion versionCreated = indexSettings.getIndexVersionCreated(); + if (IndexVersion.CURRENT.equals(versionCreated) == false) { return super.get(indexSettings, environment, name, settings); } else { return current; diff --git a/server/src/main/java/org/elasticsearch/index/analysis/PreConfiguredAnalysisComponent.java b/server/src/main/java/org/elasticsearch/index/analysis/PreConfiguredAnalysisComponent.java index c14c868618c28..826366efaddfd 100644 --- a/server/src/main/java/org/elasticsearch/index/analysis/PreConfiguredAnalysisComponent.java +++ b/server/src/main/java/org/elasticsearch/index/analysis/PreConfiguredAnalysisComponent.java @@ -36,7 +36,7 @@ protected PreConfiguredAnalysisComponent(String name, PreBuiltCacheFactory.PreBu @Override public T get(IndexSettings indexSettings, Environment environment, String name, Settings settings) throws IOException { - Version versionCreated = indexSettings.getIndexVersionCreated(); + Version versionCreated = indexSettings.getIndexVersionCreated().toVersion(); synchronized (this) { T factory = cache.get(versionCreated); if (factory == null) { diff --git a/server/src/main/java/org/elasticsearch/index/analysis/ShingleTokenFilterFactory.java b/server/src/main/java/org/elasticsearch/index/analysis/ShingleTokenFilterFactory.java index 15e95e730af84..256fc75733cfb 100644 --- a/server/src/main/java/org/elasticsearch/index/analysis/ShingleTokenFilterFactory.java +++ b/server/src/main/java/org/elasticsearch/index/analysis/ShingleTokenFilterFactory.java @@ -10,12 +10,12 @@ import org.apache.lucene.analysis.TokenStream; import org.apache.lucene.analysis.shingle.ShingleFilter; -import org.elasticsearch.Version; import org.elasticsearch.common.logging.DeprecationCategory; import org.elasticsearch.common.logging.DeprecationLogger; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.env.Environment; import org.elasticsearch.index.IndexSettings; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.lucene.analysis.miscellaneous.DisableGraphAttribute; public class ShingleTokenFilterFactory extends AbstractTokenFilterFactory { @@ -36,7 +36,7 @@ public ShingleTokenFilterFactory(IndexSettings indexSettings, Environment enviro int shingleDiff = maxShingleSize - minShingleSize + (outputUnigrams ? 1 : 0); if (shingleDiff > maxAllowedShingleDiff) { - if (indexSettings.getIndexVersionCreated().onOrAfter(Version.V_7_0_0)) { + if (indexSettings.getIndexVersionCreated().onOrAfter(IndexVersion.V_7_0_0)) { throw new IllegalArgumentException( "In Shingle TokenFilter the difference between max_shingle_size and min_shingle_size (and +1 if outputting unigrams)" + " must be less than or equal to: [" @@ -81,7 +81,7 @@ public TokenStream create(TokenStream tokenStream) { @Override public TokenFilterFactory getSynonymFilter() { - if (indexSettings.getIndexVersionCreated().onOrAfter(Version.V_7_0_0)) { + if (indexSettings.getIndexVersionCreated().onOrAfter(IndexVersion.V_7_0_0)) { throw new IllegalArgumentException("Token filter [" + name() + "] cannot be used to parse synonyms"); } else { DEPRECATION_LOGGER.warn( diff --git a/server/src/main/java/org/elasticsearch/index/engine/InternalEngine.java b/server/src/main/java/org/elasticsearch/index/engine/InternalEngine.java index a79c0e214a0ce..8d27a5005d2bb 100644 --- a/server/src/main/java/org/elasticsearch/index/engine/InternalEngine.java +++ b/server/src/main/java/org/elasticsearch/index/engine/InternalEngine.java @@ -71,6 +71,7 @@ import org.elasticsearch.env.Environment; import org.elasticsearch.index.IndexMode; import org.elasticsearch.index.IndexSettings; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.VersionType; import org.elasticsearch.index.cache.query.TrivialQueryCachingPolicy; import org.elasticsearch.index.mapper.DocumentParser; @@ -3181,7 +3182,8 @@ private boolean assertMaxSeqNoOfUpdatesIsAdvanced(Term id, long seqNo, boolean a * after the local checkpoint in the safe commit. This step ensures the live version map and checkpoint tracker * are in sync with the Lucene commit. */ - private void restoreVersionMapAndCheckpointTracker(DirectoryReader directoryReader, Version indexVersionCreated) throws IOException { + private void restoreVersionMapAndCheckpointTracker(DirectoryReader directoryReader, IndexVersion indexVersionCreated) + throws IOException { final IndexSearcher searcher = new IndexSearcher(directoryReader); searcher.setQueryCache(null); final Query query = new BooleanQuery.Builder().add( diff --git a/server/src/main/java/org/elasticsearch/index/engine/LuceneChangesSnapshot.java b/server/src/main/java/org/elasticsearch/index/engine/LuceneChangesSnapshot.java index b81709aae8cb1..1005f8f486beb 100644 --- a/server/src/main/java/org/elasticsearch/index/engine/LuceneChangesSnapshot.java +++ b/server/src/main/java/org/elasticsearch/index/engine/LuceneChangesSnapshot.java @@ -24,12 +24,12 @@ import org.apache.lucene.search.TopDocs; import org.apache.lucene.search.TopFieldCollector; import org.apache.lucene.util.ArrayUtil; -import org.elasticsearch.Version; import org.elasticsearch.common.bytes.BytesReference; import org.elasticsearch.common.lucene.Lucene; import org.elasticsearch.common.lucene.index.SequentialStoredFieldsLeafReader; import org.elasticsearch.common.lucene.search.Queries; import org.elasticsearch.core.IOUtils; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.fieldvisitor.FieldsVisitor; import org.elasticsearch.index.mapper.SeqNoFieldMapper; import org.elasticsearch.index.mapper.SourceFieldMapper; @@ -63,7 +63,7 @@ final class LuceneChangesSnapshot implements Translog.Snapshot { private final ParallelArray parallelArray; private final Closeable onClose; - private final Version indexVersionCreated; + private final IndexVersion indexVersionCreated; private int storedFieldsReaderOrd = -1; private StoredFieldsReader storedFieldsReader = null; @@ -90,7 +90,7 @@ final class LuceneChangesSnapshot implements Translog.Snapshot { boolean requiredFullRange, boolean singleConsumer, boolean accessStats, - Version indexVersionCreated + IndexVersion indexVersionCreated ) throws IOException { if (fromSeqNo < 0 || toSeqNo < 0 || fromSeqNo > toSeqNo) { throw new IllegalArgumentException("Invalid range; from_seqno [" + fromSeqNo + "], to_seqno [" + toSeqNo + "]"); @@ -278,13 +278,13 @@ private static IndexSearcher newIndexSearcher(Engine.Searcher engineSearcher) th return new IndexSearcher(Lucene.wrapAllDocsLive(engineSearcher.getDirectoryReader())); } - private static Query rangeQuery(long fromSeqNo, long toSeqNo, Version indexVersionCreated) { + private static Query rangeQuery(long fromSeqNo, long toSeqNo, IndexVersion indexVersionCreated) { return new BooleanQuery.Builder().add(LongPoint.newRangeQuery(SeqNoFieldMapper.NAME, fromSeqNo, toSeqNo), BooleanClause.Occur.MUST) .add(Queries.newNonNestedFilter(indexVersionCreated), BooleanClause.Occur.MUST) // exclude non-root nested documents .build(); } - static int countOperations(Engine.Searcher engineSearcher, long fromSeqNo, long toSeqNo, Version indexVersionCreated) + static int countOperations(Engine.Searcher engineSearcher, long fromSeqNo, long toSeqNo, IndexVersion indexVersionCreated) throws IOException { if (fromSeqNo < 0 || toSeqNo < 0 || fromSeqNo > toSeqNo) { throw new IllegalArgumentException("Invalid range; from_seqno [" + fromSeqNo + "], to_seqno [" + toSeqNo + "]"); diff --git a/server/src/main/java/org/elasticsearch/index/engine/ReadOnlyEngine.java b/server/src/main/java/org/elasticsearch/index/engine/ReadOnlyEngine.java index ea3ba39e5017a..d428bdbfb13db 100644 --- a/server/src/main/java/org/elasticsearch/index/engine/ReadOnlyEngine.java +++ b/server/src/main/java/org/elasticsearch/index/engine/ReadOnlyEngine.java @@ -18,7 +18,6 @@ import org.apache.lucene.search.ReferenceManager; import org.apache.lucene.store.Directory; import org.apache.lucene.store.Lock; -import org.elasticsearch.Version; import org.elasticsearch.action.ActionListener; import org.elasticsearch.action.admin.indices.forcemerge.ForceMergeRequest; import org.elasticsearch.common.hash.MessageDigests; @@ -27,6 +26,7 @@ import org.elasticsearch.common.util.concurrent.ReleasableLock; import org.elasticsearch.core.IOUtils; import org.elasticsearch.core.Nullable; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.mapper.DocumentParser; import org.elasticsearch.index.mapper.MappingLookup; import org.elasticsearch.index.seqno.SeqNoStats; @@ -174,8 +174,9 @@ protected void ensureMaxSeqNoEqualsToGlobalCheckpoint(final SeqNoStats seqNoStat // In addition to that we only execute the check if the index the engine belongs to has been // created after the refactoring of the Close Index API and its TransportVerifyShardBeforeCloseAction // that guarantee that all operations have been flushed to Lucene. - final Version indexVersionCreated = engineConfig.getIndexSettings().getIndexVersionCreated(); - if (indexVersionCreated.onOrAfter(Version.V_7_2_0) || (seqNoStats.getGlobalCheckpoint() != SequenceNumbers.UNASSIGNED_SEQ_NO)) { + IndexVersion indexVersionCreated = engineConfig.getIndexSettings().getIndexVersionCreated(); + if (indexVersionCreated.onOrAfter(IndexVersion.V_7_2_0) + || (seqNoStats.getGlobalCheckpoint() != SequenceNumbers.UNASSIGNED_SEQ_NO)) { assert assertMaxSeqNoEqualsToGlobalCheckpoint(seqNoStats.getMaxSeqNo(), seqNoStats.getGlobalCheckpoint()); if (seqNoStats.getMaxSeqNo() != seqNoStats.getGlobalCheckpoint()) { throw new IllegalStateException( diff --git a/server/src/main/java/org/elasticsearch/index/mapper/AbstractScriptFieldType.java b/server/src/main/java/org/elasticsearch/index/mapper/AbstractScriptFieldType.java index 587765debe53d..d35dc131e6c40 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/AbstractScriptFieldType.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/AbstractScriptFieldType.java @@ -14,11 +14,11 @@ import org.apache.lucene.search.MultiTermQuery; import org.apache.lucene.search.Query; import org.elasticsearch.ElasticsearchException; -import org.elasticsearch.Version; import org.elasticsearch.common.geo.ShapeRelation; import org.elasticsearch.common.time.DateMathParser; import org.elasticsearch.common.unit.Fuzziness; import org.elasticsearch.core.Nullable; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.query.SearchExecutionContext; import org.elasticsearch.script.CompositeFieldScript; import org.elasticsearch.script.Script; @@ -278,10 +278,10 @@ protected final RuntimeField createChildRuntimeField( } final RuntimeField createRuntimeField(Factory scriptFactory) { - return createRuntimeField(scriptFactory, Version.CURRENT); + return createRuntimeField(scriptFactory, IndexVersion.CURRENT); } - final RuntimeField createRuntimeField(Factory scriptFactory, Version indexVersion) { + final RuntimeField createRuntimeField(Factory scriptFactory, IndexVersion indexVersion) { var fieldType = createFieldType(name, scriptFactory, getScript(), meta(), indexVersion, onScriptError.get()); return new LeafRuntimeField(name, fieldType, getParameters()); } @@ -299,7 +299,7 @@ AbstractScriptFieldType createFieldType( Factory factory, Script script, Map meta, - Version supportedVersion, + IndexVersion supportedVersion, OnScriptError onScriptError ) { return createFieldType(name, factory, script, meta, onScriptError); diff --git a/server/src/main/java/org/elasticsearch/index/mapper/BooleanFieldMapper.java b/server/src/main/java/org/elasticsearch/index/mapper/BooleanFieldMapper.java index 5c599699e28ae..f11a3781fd19c 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/BooleanFieldMapper.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/BooleanFieldMapper.java @@ -20,12 +20,12 @@ import org.apache.lucene.search.Query; import org.apache.lucene.search.TermRangeQuery; import org.apache.lucene.util.BytesRef; -import org.elasticsearch.Version; import org.elasticsearch.common.Explicit; import org.elasticsearch.common.lucene.Lucene; import org.elasticsearch.common.xcontent.support.XContentMapValues; import org.elasticsearch.core.Booleans; import org.elasticsearch.core.Nullable; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.analysis.NamedAnalyzer; import org.elasticsearch.index.fielddata.FieldDataContext; import org.elasticsearch.index.fielddata.IndexFieldData; @@ -91,9 +91,9 @@ public static class Builder extends FieldMapper.Builder { private final ScriptCompiler scriptCompiler; - private final Version indexCreatedVersion; + private final IndexVersion indexCreatedVersion; - public Builder(String name, ScriptCompiler scriptCompiler, boolean ignoreMalformedByDefault, Version indexCreatedVersion) { + public Builder(String name, ScriptCompiler scriptCompiler, boolean ignoreMalformedByDefault, IndexVersion indexCreatedVersion) { super(name); this.scriptCompiler = Objects.requireNonNull(scriptCompiler); this.indexCreatedVersion = Objects.requireNonNull(indexCreatedVersion); @@ -146,7 +146,7 @@ private FieldValues scriptValues() { } } - private static final Version MINIMUM_COMPATIBILITY_VERSION = Version.fromString("5.0.0"); + private static final IndexVersion MINIMUM_COMPATIBILITY_VERSION = IndexVersion.fromId(5000099); public static final TypeParser PARSER = new TypeParser( (n, c) -> new Builder(n, c.scriptCompiler(), IGNORE_MALFORMED_SETTING.get(c.getSettings()), c.indexVersionCreated()), @@ -367,7 +367,7 @@ public Query rangeQuery( private final Script script; private final FieldValues scriptValues; private final ScriptCompiler scriptCompiler; - private final Version indexCreatedVersion; + private final IndexVersion indexCreatedVersion; private final Explicit ignoreMalformed; private final boolean ignoreMalformedByDefault; diff --git a/server/src/main/java/org/elasticsearch/index/mapper/CompletionFieldMapper.java b/server/src/main/java/org/elasticsearch/index/mapper/CompletionFieldMapper.java index fffff331cf44b..c0c3ac5872e02 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/CompletionFieldMapper.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/CompletionFieldMapper.java @@ -17,12 +17,12 @@ import org.apache.lucene.search.suggest.document.PrefixCompletionQuery; import org.apache.lucene.search.suggest.document.RegexCompletionQuery; import org.apache.lucene.search.suggest.document.SuggestField; -import org.elasticsearch.Version; import org.elasticsearch.common.ParsingException; import org.elasticsearch.common.logging.DeprecationCategory; import org.elasticsearch.common.logging.DeprecationLogger; import org.elasticsearch.common.unit.Fuzziness; import org.elasticsearch.common.util.Maps; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.analysis.AnalyzerScope; import org.elasticsearch.index.analysis.NamedAnalyzer; import org.elasticsearch.index.query.SearchExecutionContext; @@ -154,14 +154,14 @@ public static class Builder extends FieldMapper.Builder { private final Parameter> meta = Parameter.metaParam(); private final NamedAnalyzer defaultAnalyzer; - private final Version indexVersionCreated; + private final IndexVersion indexVersionCreated; private static final DeprecationLogger deprecationLogger = DeprecationLogger.getLogger(Builder.class); /** * @param name of the completion field to build */ - public Builder(String name, NamedAnalyzer defaultAnalyzer, Version indexVersionCreated) { + public Builder(String name, NamedAnalyzer defaultAnalyzer, IndexVersion indexVersionCreated) { super(name); this.defaultAnalyzer = defaultAnalyzer; this.indexVersionCreated = indexVersionCreated; @@ -210,7 +210,7 @@ public CompletionFieldMapper build(MapperBuilderContext context) { private void checkCompletionContextsLimit() { if (this.contexts.getValue() != null && this.contexts.getValue().size() > COMPLETION_CONTEXTS_LIMIT) { - if (indexVersionCreated.onOrAfter(Version.V_8_0_0)) { + if (indexVersionCreated.onOrAfter(IndexVersion.V_8_0_0)) { throw new IllegalArgumentException( "Limit of completion field contexts [" + COMPLETION_CONTEXTS_LIMIT + "] has been exceeded" ); diff --git a/server/src/main/java/org/elasticsearch/index/mapper/DateFieldMapper.java b/server/src/main/java/org/elasticsearch/index/mapper/DateFieldMapper.java index 0b8f3855fdd2c..3bf593627faa9 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/DateFieldMapper.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/DateFieldMapper.java @@ -22,7 +22,6 @@ import org.apache.lucene.search.IndexSortSortedNumericDocValuesRangeQuery; import org.apache.lucene.search.Query; import org.elasticsearch.ElasticsearchParseException; -import org.elasticsearch.Version; import org.elasticsearch.common.geo.ShapeRelation; import org.elasticsearch.common.logging.DeprecationCategory; import org.elasticsearch.common.logging.DeprecationLogger; @@ -34,6 +33,7 @@ import org.elasticsearch.common.util.LocaleUtils; import org.elasticsearch.core.Nullable; import org.elasticsearch.core.TimeValue; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.fielddata.FieldDataContext; import org.elasticsearch.index.fielddata.IndexFieldData; import org.elasticsearch.index.fielddata.IndexNumericFieldData.NumericType; @@ -249,7 +249,7 @@ public static class Builder extends FieldMapper.Builder { private final Parameter onScriptError = Parameter.onScriptErrorParam(m -> toType(m).onScriptError, script); private final Resolution resolution; - private final Version indexCreatedVersion; + private final IndexVersion indexCreatedVersion; private final ScriptCompiler scriptCompiler; public Builder( @@ -258,7 +258,7 @@ public Builder( DateFormatter dateFormatter, ScriptCompiler scriptCompiler, boolean ignoreMalformedByDefault, - Version indexCreatedVersion + IndexVersion indexCreatedVersion ) { super(name); this.resolution = resolution; @@ -325,7 +325,7 @@ private Long parseNullValue(DateFieldType fieldType) { try { return fieldType.parse(nullValue.getValue()); } catch (Exception e) { - if (indexCreatedVersion.onOrAfter(Version.V_8_0_0)) { + if (indexCreatedVersion.onOrAfter(IndexVersion.V_8_0_0)) { throw new MapperParsingException("Error parsing [null_value] on field [" + name() + "]: " + e.getMessage(), e); } else { DEPRECATION_LOGGER.warn( @@ -362,7 +362,7 @@ public DateFieldMapper build(MapperBuilderContext context) { } } - private static final Version MINIMUM_COMPATIBILITY_VERSION = Version.fromString("5.0.0"); + private static final IndexVersion MINIMUM_COMPATIBILITY_VERSION = IndexVersion.fromId(5000099); public static final TypeParser MILLIS_PARSER = new TypeParser((n, c) -> { boolean ignoreMalformedByDefault = IGNORE_MALFORMED_SETTING.get(c.getSettings()); @@ -834,7 +834,7 @@ public DocValueFormat docValueFormat(@Nullable String format, ZoneId timeZone) { private final Resolution resolution; private final boolean ignoreMalformedByDefault; - private final Version indexCreatedVersion; + private final IndexVersion indexCreatedVersion; private final Script script; private final ScriptCompiler scriptCompiler; diff --git a/server/src/main/java/org/elasticsearch/index/mapper/DateScriptFieldType.java b/server/src/main/java/org/elasticsearch/index/mapper/DateScriptFieldType.java index c2371877ae6ed..3764a6c3b081e 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/DateScriptFieldType.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/DateScriptFieldType.java @@ -9,7 +9,6 @@ package org.elasticsearch.index.mapper; import org.apache.lucene.search.Query; -import org.elasticsearch.Version; import org.elasticsearch.common.lucene.search.Queries; import org.elasticsearch.common.time.DateFormatter; import org.elasticsearch.common.time.DateMathParser; @@ -17,6 +16,7 @@ import org.elasticsearch.common.util.set.Sets; import org.elasticsearch.core.Nullable; import org.elasticsearch.core.TimeValue; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.fielddata.DateScriptFieldData; import org.elasticsearch.index.fielddata.FieldDataContext; import org.elasticsearch.index.mapper.DateFieldMapper.DateFieldType; @@ -92,7 +92,7 @@ AbstractScriptFieldType createFieldType( DateFieldScript.Factory factory, Script script, Map meta, - Version supportedVersion, + IndexVersion supportedVersion, OnScriptError onScriptError ) { String pattern = format.getValue() == null ? DateFieldMapper.DEFAULT_DATE_TIME_FORMATTER.pattern() : format.getValue(); @@ -109,7 +109,7 @@ AbstractScriptFieldType createFieldType( Map meta, OnScriptError onScriptError ) { - return createFieldType(name, factory, script, meta, Version.CURRENT, onScriptError); + return createFieldType(name, factory, script, meta, IndexVersion.CURRENT, onScriptError); } @Override @@ -123,7 +123,7 @@ DateFieldScript.Factory getCompositeLeafFactory(Function node, MappingParser } @Override - public boolean supportsVersion(Version indexCreatedVersion) { + public boolean supportsVersion(IndexVersion indexCreatedVersion) { return true; } } diff --git a/server/src/main/java/org/elasticsearch/index/mapper/FieldMapper.java b/server/src/main/java/org/elasticsearch/index/mapper/FieldMapper.java index 04352ce7b7730..4de474f545c41 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/FieldMapper.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/FieldMapper.java @@ -11,7 +11,6 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.apache.lucene.index.LeafReaderContext; -import org.elasticsearch.Version; import org.elasticsearch.common.Explicit; import org.elasticsearch.common.TriFunction; import org.elasticsearch.common.collect.Iterators; @@ -22,6 +21,7 @@ import org.elasticsearch.common.util.CollectionUtils; import org.elasticsearch.common.util.Maps; import org.elasticsearch.common.xcontent.support.XContentMapValues; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.analysis.NamedAnalyzer; import org.elasticsearch.script.Script; import org.elasticsearch.script.ScriptType; @@ -1017,7 +1017,7 @@ public static Parameter analyzerParam( boolean updateable, Function initializer, Supplier defaultAnalyzer, - Version indexCreatedVersion + IndexVersion indexCreatedVersion ) { return new Parameter<>(name, updateable, defaultAnalyzer, (n, c, o) -> { String analyzerName = o.toString(); @@ -1047,7 +1047,7 @@ public static Parameter analyzerParam( Function initializer, Supplier defaultAnalyzer ) { - return analyzerParam(name, updateable, initializer, defaultAnalyzer, Version.CURRENT); + return analyzerParam(name, updateable, initializer, defaultAnalyzer, IndexVersion.CURRENT); } /** @@ -1260,7 +1260,7 @@ public final void parse(String name, MappingParserContext parserContext, Map { - if (parserContext.indexVersionCreated().onOrAfter(Version.V_8_0_0)) { + if (parserContext.indexVersionCreated().onOrAfter(IndexVersion.V_8_0_0)) { throw new MapperParsingException("Unknown parameter [boost] on mapper [" + name + "]"); } deprecationLogger.warn( @@ -1304,7 +1304,7 @@ public final void parse(String name, MappingParserContext parserContext, Map DEPRECATED_PARAMS = Set.of("store", "meta", "index", "doc_values", "index_options", "similarity"); - private static boolean isDeprecatedParameter(String propName, Version indexCreatedVersion) { - if (indexCreatedVersion.onOrAfter(Version.V_8_0_0)) { + private static boolean isDeprecatedParameter(String propName, IndexVersion indexCreatedVersion) { + if (indexCreatedVersion.onOrAfter(IndexVersion.V_8_0_0)) { return false; } return DEPRECATED_PARAMS.contains(propName); @@ -1373,21 +1373,21 @@ public static final class TypeParser implements Mapper.TypeParser { private final BiFunction builderFunction; private final BiConsumer contextValidator; - private final Version minimumCompatibilityVersion; // see Mapper.TypeParser#supportsVersion() + private final IndexVersion minimumCompatibilityVersion; // see Mapper.TypeParser#supportsVersion() /** * Creates a new TypeParser * @param builderFunction a function that produces a Builder from a name and parsercontext */ public TypeParser(BiFunction builderFunction) { - this(builderFunction, (n, c) -> {}, Version.CURRENT.minimumIndexCompatibilityVersion()); + this(builderFunction, (n, c) -> {}, IndexVersion.MINIMUM_COMPATIBLE); } /** * Variant of {@link #TypeParser(BiFunction)} that allows to defining a minimumCompatibilityVersion to - * allow parsing mapping definitions of legacy indices (see {@link Mapper.TypeParser#supportsVersion(Version)}). + * allow parsing mapping definitions of legacy indices (see {@link Mapper.TypeParser#supportsVersion(IndexVersion)}). */ - public TypeParser(BiFunction builderFunction, Version minimumCompatibilityVersion) { + public TypeParser(BiFunction builderFunction, IndexVersion minimumCompatibilityVersion) { this(builderFunction, (n, c) -> {}, minimumCompatibilityVersion); } @@ -1395,13 +1395,13 @@ public TypeParser( BiFunction builderFunction, BiConsumer contextValidator ) { - this(builderFunction, contextValidator, Version.CURRENT.minimumIndexCompatibilityVersion()); + this(builderFunction, contextValidator, IndexVersion.MINIMUM_COMPATIBLE); } private TypeParser( BiFunction builderFunction, BiConsumer contextValidator, - Version minimumCompatibilityVersion + IndexVersion minimumCompatibilityVersion ) { this.builderFunction = builderFunction; this.contextValidator = contextValidator; @@ -1417,7 +1417,7 @@ public Builder parse(String name, Map node, MappingParserContext } @Override - public boolean supportsVersion(Version indexCreatedVersion) { + public boolean supportsVersion(IndexVersion indexCreatedVersion) { return indexCreatedVersion.onOrAfter(minimumCompatibilityVersion); } } diff --git a/server/src/main/java/org/elasticsearch/index/mapper/FieldNamesFieldMapper.java b/server/src/main/java/org/elasticsearch/index/mapper/FieldNamesFieldMapper.java index 0922b35020768..cefd31efb49dd 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/FieldNamesFieldMapper.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/FieldNamesFieldMapper.java @@ -11,10 +11,10 @@ import org.apache.lucene.document.Field; import org.apache.lucene.document.StringField; import org.apache.lucene.search.Query; -import org.elasticsearch.Version; import org.elasticsearch.common.Explicit; import org.elasticsearch.common.logging.DeprecationCategory; import org.elasticsearch.common.logging.DeprecationLogger; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.query.SearchExecutionContext; import java.util.Collections; @@ -63,8 +63,8 @@ static class Builder extends MetadataFieldMapper.Builder { private final boolean createdOnOrAfterV8; - Builder(Version indexVersionCreated) { - this(indexVersionCreated.onOrAfter(Version.V_8_0_0)); + Builder(IndexVersion indexVersionCreated) { + this(indexVersionCreated.onOrAfter(IndexVersion.V_8_0_0)); } Builder(boolean createdOnOrAfterV8) { @@ -101,7 +101,7 @@ public FieldNamesFieldMapper build() { private static final FieldNamesFieldMapper DEFAULT_OLD = new FieldNamesFieldMapper(Defaults.ENABLED, false); public static final TypeParser PARSER = new ConfigurableTypeParser( - c -> c.indexVersionCreated().onOrAfter(Version.V_8_0_0) ? DEFAULT : DEFAULT_OLD, + c -> c.indexVersionCreated().onOrAfter(IndexVersion.V_8_0_0) ? DEFAULT : DEFAULT_OLD, c -> new Builder(c.indexVersionCreated()) ); diff --git a/server/src/main/java/org/elasticsearch/index/mapper/GeoPointFieldMapper.java b/server/src/main/java/org/elasticsearch/index/mapper/GeoPointFieldMapper.java index a6d6ea04f334e..359a3b4eb6f86 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/GeoPointFieldMapper.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/GeoPointFieldMapper.java @@ -17,7 +17,6 @@ import org.apache.lucene.search.IndexOrDocValuesQuery; import org.apache.lucene.search.Query; import org.elasticsearch.ElasticsearchParseException; -import org.elasticsearch.Version; import org.elasticsearch.common.Explicit; import org.elasticsearch.common.geo.GeoFormatterFactory; import org.elasticsearch.common.geo.GeoPoint; @@ -29,6 +28,7 @@ import org.elasticsearch.core.CheckedFunction; import org.elasticsearch.geometry.Point; import org.elasticsearch.index.IndexMode; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.fielddata.FieldDataContext; import org.elasticsearch.index.fielddata.IndexFieldData; import org.elasticsearch.index.fielddata.SourceValueFetcherMultiGeoPointIndexFieldData; @@ -87,7 +87,7 @@ public static class Builder extends FieldMapper.Builder { final Parameter> meta = Parameter.metaParam(); private final ScriptCompiler scriptCompiler; - private final Version indexCreatedVersion; + private final IndexVersion indexCreatedVersion; private final Parameter metric; // either null, or POSITION if this is a time series metric private final Parameter dimension; // can only support time_series_dimension: false private final IndexMode indexMode; // either STANDARD or TIME_SERIES @@ -96,7 +96,7 @@ public Builder( String name, ScriptCompiler scriptCompiler, boolean ignoreMalformedByDefault, - Version indexCreatedVersion, + IndexVersion indexCreatedVersion, IndexMode mode ) { super(name); @@ -217,7 +217,7 @@ public FieldMapper build(MapperBuilderContext context) { } - private static final Version MINIMUM_COMPATIBILITY_VERSION = Version.fromString("5.0.0"); + private static final IndexVersion MINIMUM_COMPATIBILITY_VERSION = IndexVersion.fromId(5000099); public static TypeParser PARSER = new TypeParser( (n, c) -> new Builder( @@ -232,7 +232,7 @@ public FieldMapper build(MapperBuilderContext context) { private final Builder builder; private final FieldValues scriptValues; - private final Version indexCreatedVersion; + private final IndexVersion indexCreatedVersion; private final TimeSeriesParams.MetricType metricType; private final IndexMode indexMode; private final boolean indexed; diff --git a/server/src/main/java/org/elasticsearch/index/mapper/GeoShapeFieldMapper.java b/server/src/main/java/org/elasticsearch/index/mapper/GeoShapeFieldMapper.java index a774fa95a7d66..37ccdfe3da36c 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/GeoShapeFieldMapper.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/GeoShapeFieldMapper.java @@ -10,7 +10,6 @@ import org.apache.lucene.document.LatLonShape; import org.apache.lucene.geo.LatLonGeometry; import org.apache.lucene.search.Query; -import org.elasticsearch.Version; import org.elasticsearch.common.Explicit; import org.elasticsearch.common.geo.GeometryFormatterFactory; import org.elasticsearch.common.geo.GeometryParser; @@ -19,6 +18,7 @@ import org.elasticsearch.common.logging.DeprecationCategory; import org.elasticsearch.common.logging.DeprecationLogger; import org.elasticsearch.geometry.Geometry; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.query.QueryShardException; import org.elasticsearch.index.query.SearchExecutionContext; @@ -132,7 +132,7 @@ public String typeName() { @Override public Query geoShapeQuery(SearchExecutionContext context, String fieldName, ShapeRelation relation, LatLonGeometry... geometries) { // CONTAINS queries are not supported by VECTOR strategy for indices created before version 7.5.0 (Lucene 8.3.0) - if (relation == ShapeRelation.CONTAINS && context.indexVersionCreated().before(Version.V_7_5_0)) { + if (relation == ShapeRelation.CONTAINS && context.indexVersionCreated().before(IndexVersion.V_7_5_0)) { throw new QueryShardException( context, ShapeRelation.CONTAINS + " query relation not supported for Field [" + fieldName + "]." diff --git a/server/src/main/java/org/elasticsearch/index/mapper/IpFieldMapper.java b/server/src/main/java/org/elasticsearch/index/mapper/IpFieldMapper.java index ab695063e1227..259f51027ce73 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/IpFieldMapper.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/IpFieldMapper.java @@ -22,13 +22,13 @@ import org.apache.lucene.search.Query; import org.apache.lucene.util.BytesRef; import org.apache.lucene.util.automaton.CompiledAutomaton; -import org.elasticsearch.Version; import org.elasticsearch.common.logging.DeprecationCategory; import org.elasticsearch.common.logging.DeprecationLogger; import org.elasticsearch.common.network.InetAddresses; import org.elasticsearch.common.network.NetworkAddress; import org.elasticsearch.core.Nullable; import org.elasticsearch.core.Tuple; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.fielddata.FieldDataContext; import org.elasticsearch.index.fielddata.IndexFieldData; import org.elasticsearch.index.fielddata.plain.SortedSetOrdinalsIndexFieldData; @@ -85,10 +85,10 @@ public static class Builder extends FieldMapper.Builder { private final Parameter dimension; private final boolean ignoreMalformedByDefault; - private final Version indexCreatedVersion; + private final IndexVersion indexCreatedVersion; private final ScriptCompiler scriptCompiler; - public Builder(String name, ScriptCompiler scriptCompiler, boolean ignoreMalformedByDefault, Version indexCreatedVersion) { + public Builder(String name, ScriptCompiler scriptCompiler, boolean ignoreMalformedByDefault, IndexVersion indexCreatedVersion) { super(name); this.scriptCompiler = Objects.requireNonNull(scriptCompiler); this.ignoreMalformedByDefault = ignoreMalformedByDefault; @@ -129,7 +129,7 @@ private InetAddress parseNullValue() { try { return InetAddresses.forString(nullValueAsString); } catch (Exception e) { - if (indexCreatedVersion.onOrAfter(Version.V_8_0_0)) { + if (indexCreatedVersion.onOrAfter(IndexVersion.V_8_0_0)) { throw new MapperParsingException("Error parsing [null_value] on field [" + name() + "]: " + e.getMessage(), e); } else { DEPRECATION_LOGGER.warn( @@ -186,7 +186,7 @@ public IpFieldMapper build(MapperBuilderContext context) { } - private static final Version MINIMUM_COMPATIBILITY_VERSION = Version.fromString("5.0.0"); + private static final IndexVersion MINIMUM_COMPATIBILITY_VERSION = IndexVersion.fromId(5000099); public static final TypeParser PARSER = new TypeParser((n, c) -> { boolean ignoreMalformedByDefault = IGNORE_MALFORMED_SETTING.get(c.getSettings()); @@ -469,7 +469,7 @@ public boolean isDimension() { private final String nullValueAsString; private final boolean ignoreMalformedByDefault; - private final Version indexCreatedVersion; + private final IndexVersion indexCreatedVersion; private final Script script; private final FieldValues scriptValues; diff --git a/server/src/main/java/org/elasticsearch/index/mapper/KeywordFieldMapper.java b/server/src/main/java/org/elasticsearch/index/mapper/KeywordFieldMapper.java index 545f5d6ba850e..56e53130fbfa3 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/KeywordFieldMapper.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/KeywordFieldMapper.java @@ -33,12 +33,12 @@ import org.apache.lucene.util.automaton.CompiledAutomaton.AUTOMATON_TYPE; import org.apache.lucene.util.automaton.MinimizationOperations; import org.apache.lucene.util.automaton.Operations; -import org.elasticsearch.Version; import org.elasticsearch.common.lucene.BytesRefs; import org.elasticsearch.common.lucene.Lucene; import org.elasticsearch.common.lucene.search.AutomatonQueries; import org.elasticsearch.common.unit.Fuzziness; import org.elasticsearch.core.Nullable; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.analysis.IndexAnalyzers; import org.elasticsearch.index.analysis.NamedAnalyzer; import org.elasticsearch.index.fielddata.FieldData; @@ -179,9 +179,9 @@ public static class Builder extends FieldMapper.Builder { private final IndexAnalyzers indexAnalyzers; private final ScriptCompiler scriptCompiler; - private final Version indexCreatedVersion; + private final IndexVersion indexCreatedVersion; - public Builder(String name, IndexAnalyzers indexAnalyzers, ScriptCompiler scriptCompiler, Version indexCreatedVersion) { + public Builder(String name, IndexAnalyzers indexAnalyzers, ScriptCompiler scriptCompiler, IndexVersion indexCreatedVersion) { super(name); this.indexAnalyzers = indexAnalyzers; this.scriptCompiler = Objects.requireNonNull(scriptCompiler); @@ -210,7 +210,7 @@ public Builder(String name, IndexAnalyzers indexAnalyzers, ScriptCompiler script }).precludesParameters(normalizer, ignoreAbove); } - public Builder(String name, Version indexCreatedVersion) { + public Builder(String name, IndexVersion indexCreatedVersion) { this(name, null, ScriptCompiler.NONE, indexCreatedVersion); } @@ -330,7 +330,7 @@ public KeywordFieldMapper build(MapperBuilderContext context) { } } - private static final Version MINIMUM_COMPATIBILITY_VERSION = Version.fromString("5.0.0"); + private static final IndexVersion MINIMUM_COMPATIBILITY_VERSION = IndexVersion.fromId(5000099); public static final TypeParser PARSER = new TypeParser( (n, c) -> new Builder(n, c.getIndexAnalyzers(), c.scriptCompiler(), c.indexVersionCreated()), @@ -811,7 +811,7 @@ public void validateMatchedRoutingPath(final String routingPath) { private final boolean splitQueriesOnWhitespace; private final Script script; private final ScriptCompiler scriptCompiler; - private final Version indexCreatedVersion; + private final IndexVersion indexCreatedVersion; private final boolean storeIgnored; private final IndexAnalyzers indexAnalyzers; diff --git a/server/src/main/java/org/elasticsearch/index/mapper/Mapper.java b/server/src/main/java/org/elasticsearch/index/mapper/Mapper.java index 6b5e526e5430a..32796aed2f422 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/Mapper.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/Mapper.java @@ -8,9 +8,9 @@ package org.elasticsearch.index.mapper; -import org.elasticsearch.Version; import org.elasticsearch.common.Strings; import org.elasticsearch.common.util.StringLiteralDeduplicator; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.xcontent.ToXContentFragment; import java.util.Map; @@ -40,8 +40,8 @@ public interface TypeParser { /** * Whether we can parse this type on indices with the given index created version. */ - default boolean supportsVersion(Version indexCreatedVersion) { - return indexCreatedVersion.onOrAfter(Version.CURRENT.minimumIndexCompatibilityVersion()); + default boolean supportsVersion(IndexVersion indexCreatedVersion) { + return indexCreatedVersion.onOrAfter(IndexVersion.MINIMUM_COMPATIBLE); } } diff --git a/server/src/main/java/org/elasticsearch/index/mapper/MapperRegistry.java b/server/src/main/java/org/elasticsearch/index/mapper/MapperRegistry.java index 5474167093eef..7fe99de6fea39 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/MapperRegistry.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/MapperRegistry.java @@ -8,7 +8,7 @@ package org.elasticsearch.index.mapper; -import org.elasticsearch.Version; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.plugins.MapperPlugin; import java.util.Collections; @@ -53,7 +53,7 @@ public MapperRegistry( /** * Return a mapper parser for the given type and index creation version. */ - public Mapper.TypeParser getMapperParser(String type, Version indexVersionCreated) { + public Mapper.TypeParser getMapperParser(String type, IndexVersion indexVersionCreated) { Mapper.TypeParser parser = mapperParsers.get(type); if (indexVersionCreated.isLegacyIndexVersion() && (parser == null || parser.supportsVersion(indexVersionCreated) == false)) { return PlaceHolderFieldMapper.PARSER.apply(type); @@ -70,14 +70,14 @@ public Map getRuntimeFieldParsers() { * Return a map of the meta mappers that have been registered. The * returned map uses the name of the field as a key. */ - public Map getMetadataMapperParsers(Version indexCreatedVersion) { - if (indexCreatedVersion.onOrAfter(Version.V_8_0_0)) { + public Map getMetadataMapperParsers(IndexVersion indexCreatedVersion) { + if (indexCreatedVersion.onOrAfter(IndexVersion.V_8_0_0)) { return metadataMapperParsers; - } else if (indexCreatedVersion.major == 7) { + } else if (indexCreatedVersion.onOrAfter(IndexVersion.V_7_0_0)) { return metadataMapperParsers7x; - } else if (indexCreatedVersion.major == 6) { + } else if (indexCreatedVersion.onOrAfter(IndexVersion.fromId(6000099))) { return metadataMapperParsers6x; - } else if (indexCreatedVersion.major == 5) { + } else if (indexCreatedVersion.onOrAfter(IndexVersion.fromId(5000099))) { return metadataMapperParsers5x; } else { throw new AssertionError("unknown version: " + indexCreatedVersion); diff --git a/server/src/main/java/org/elasticsearch/index/mapper/MapperService.java b/server/src/main/java/org/elasticsearch/index/mapper/MapperService.java index 139a4ec3e7d64..62c134ebed9e4 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/MapperService.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/MapperService.java @@ -9,7 +9,6 @@ package org.elasticsearch.index.mapper; import org.elasticsearch.TransportVersion; -import org.elasticsearch.Version; import org.elasticsearch.cluster.metadata.IndexMetadata; import org.elasticsearch.cluster.metadata.MappingMetadata; import org.elasticsearch.cluster.service.ClusterService; @@ -20,6 +19,7 @@ import org.elasticsearch.common.xcontent.LoggingDeprecationHandler; import org.elasticsearch.index.AbstractIndexComponent; import org.elasticsearch.index.IndexSettings; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.analysis.AnalysisRegistry; import org.elasticsearch.index.analysis.IndexAnalyzers; import org.elasticsearch.index.analysis.NamedAnalyzer; @@ -119,7 +119,7 @@ public enum MergeReason { private final IndexAnalyzers indexAnalyzers; private final MappingParser mappingParser; private final DocumentParser documentParser; - private final Version indexVersionCreated; + private final IndexVersion indexVersionCreated; private final MapperRegistry mapperRegistry; private final Supplier mappingParserContextSupplier; private volatile DocumentMapper mapper; diff --git a/server/src/main/java/org/elasticsearch/index/mapper/MappingParserContext.java b/server/src/main/java/org/elasticsearch/index/mapper/MappingParserContext.java index 238a115c59d0e..88df87859ccc2 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/MappingParserContext.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/MappingParserContext.java @@ -9,10 +9,10 @@ package org.elasticsearch.index.mapper; import org.elasticsearch.TransportVersion; -import org.elasticsearch.Version; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.time.DateFormatter; import org.elasticsearch.index.IndexSettings; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.analysis.IndexAnalyzers; import org.elasticsearch.index.query.SearchExecutionContext; import org.elasticsearch.index.similarity.SimilarityProvider; @@ -30,7 +30,7 @@ public class MappingParserContext { private final Function similarityLookupService; private final Function typeParsers; private final Function runtimeFieldParsers; - private final Version indexVersionCreated; + private final IndexVersion indexVersionCreated; private final Supplier clusterTransportVersion; private final Supplier searchExecutionContextSupplier; private final ScriptCompiler scriptCompiler; @@ -44,7 +44,7 @@ public MappingParserContext( Function similarityLookupService, Function typeParsers, Function runtimeFieldParsers, - Version indexVersionCreated, + IndexVersion indexVersionCreated, Supplier clusterTransportVersion, Supplier searchExecutionContextSupplier, ScriptCompiler scriptCompiler, @@ -93,7 +93,7 @@ public RuntimeField.Parser runtimeFieldParser(String type) { return runtimeFieldParsers.apply(type); } - public Version indexVersionCreated() { + public IndexVersion indexVersionCreated() { return indexVersionCreated; } diff --git a/server/src/main/java/org/elasticsearch/index/mapper/MetadataFieldMapper.java b/server/src/main/java/org/elasticsearch/index/mapper/MetadataFieldMapper.java index e5bb647976185..0ca3044af64b3 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/MetadataFieldMapper.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/MetadataFieldMapper.java @@ -8,11 +8,11 @@ package org.elasticsearch.index.mapper; -import org.elasticsearch.Version; import org.elasticsearch.common.Explicit; import org.elasticsearch.common.logging.DeprecationCategory; import org.elasticsearch.common.util.Maps; import org.elasticsearch.common.xcontent.support.XContentMapValues; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.xcontent.XContentBuilder; import java.io.IOException; @@ -149,7 +149,7 @@ public final void parseMetadataField(String name, MappingParserContext parserCon Parameter parameter = paramsMap.get(propName); if (parameter == null) { if (UNSUPPORTED_PARAMETERS_8_6_0.contains(propName)) { - if (parserContext.indexVersionCreated().onOrAfter(Version.V_8_6_0)) { + if (parserContext.indexVersionCreated().onOrAfter(IndexVersion.V_8_6_0)) { // silently ignore type, and a few other parameters: sadly we've been doing this for a long time deprecationLogger.warn( DeprecationCategory.API, diff --git a/server/src/main/java/org/elasticsearch/index/mapper/NestedObjectMapper.java b/server/src/main/java/org/elasticsearch/index/mapper/NestedObjectMapper.java index b82c13574e14b..68f07c1a2cad1 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/NestedObjectMapper.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/NestedObjectMapper.java @@ -9,9 +9,9 @@ package org.elasticsearch.index.mapper; import org.apache.lucene.search.Query; -import org.elasticsearch.Version; import org.elasticsearch.common.Explicit; import org.elasticsearch.common.xcontent.support.XContentMapValues; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.xcontent.XContentBuilder; import java.io.IOException; @@ -30,9 +30,9 @@ public static class Builder extends ObjectMapper.Builder { private Explicit includeInRoot = Explicit.IMPLICIT_FALSE; private Explicit includeInParent = Explicit.IMPLICIT_FALSE; - private final Version indexCreatedVersion; + private final IndexVersion indexCreatedVersion; - public Builder(String name, Version indexCreatedVersion) { + public Builder(String name, IndexVersion indexCreatedVersion) { super(name, Explicit.IMPLICIT_TRUE); this.indexCreatedVersion = indexCreatedVersion; } @@ -125,7 +125,7 @@ public MapperBuilderContext createChildContext(String name) { NestedObjectMapper(String name, String fullPath, Map mappers, Builder builder) { super(name, fullPath, builder.enabled, Explicit.IMPLICIT_TRUE, builder.dynamic, mappers); - if (builder.indexCreatedVersion.before(Version.V_8_0_0)) { + if (builder.indexCreatedVersion.before(IndexVersion.V_8_0_0)) { this.nestedTypePath = "__" + fullPath; } else { this.nestedTypePath = fullPath; @@ -169,7 +169,7 @@ public Map getChildren() { } @Override - public ObjectMapper.Builder newBuilder(Version indexVersionCreated) { + public ObjectMapper.Builder newBuilder(IndexVersion indexVersionCreated) { NestedObjectMapper.Builder builder = new NestedObjectMapper.Builder(simpleName(), indexVersionCreated); builder.enabled = enabled; builder.dynamic = dynamic; diff --git a/server/src/main/java/org/elasticsearch/index/mapper/NestedPathFieldMapper.java b/server/src/main/java/org/elasticsearch/index/mapper/NestedPathFieldMapper.java index 6c84732dd4f94..721b4ada67590 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/NestedPathFieldMapper.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/NestedPathFieldMapper.java @@ -14,7 +14,7 @@ import org.apache.lucene.search.Query; import org.apache.lucene.search.TermQuery; import org.apache.lucene.util.BytesRef; -import org.elasticsearch.Version; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.query.SearchExecutionContext; import java.util.Collections; @@ -28,23 +28,23 @@ public class NestedPathFieldMapper extends MetadataFieldMapper { private static final NestedPathFieldMapper INSTANCE = new NestedPathFieldMapper(NAME); private static final NestedPathFieldMapper INSTANCE_PRE_V8 = new NestedPathFieldMapper(NAME_PRE_V8); - public static String name(Version version) { - if (version.before(Version.V_8_0_0)) { + public static String name(IndexVersion version) { + if (version.before(IndexVersion.V_8_0_0)) { return NAME_PRE_V8; } return NAME; } - public static Query filter(Version version, String path) { + public static Query filter(IndexVersion version, String path) { return new TermQuery(new Term(name(version), new BytesRef(path))); } - public static Field field(Version version, String path) { + public static Field field(IndexVersion version, String path) { return new StringField(name(version), path, Field.Store.NO); } public static final TypeParser PARSER = new FixedTypeParser( - c -> c.indexVersionCreated().before(Version.V_8_0_0) ? INSTANCE_PRE_V8 : INSTANCE + c -> c.indexVersionCreated().before(IndexVersion.V_8_0_0) ? INSTANCE_PRE_V8 : INSTANCE ); public static final class NestedPathFieldType extends StringFieldType { diff --git a/server/src/main/java/org/elasticsearch/index/mapper/NumberFieldMapper.java b/server/src/main/java/org/elasticsearch/index/mapper/NumberFieldMapper.java index 8c73afcabd472..7590fd36d849a 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/NumberFieldMapper.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/NumberFieldMapper.java @@ -27,7 +27,6 @@ import org.apache.lucene.search.Query; import org.apache.lucene.util.BytesRef; import org.apache.lucene.util.NumericUtils; -import org.elasticsearch.Version; import org.elasticsearch.common.Explicit; import org.elasticsearch.common.Numbers; import org.elasticsearch.common.lucene.search.Queries; @@ -35,6 +34,7 @@ import org.elasticsearch.common.settings.Setting.Property; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.index.IndexMode; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.fielddata.FieldDataContext; import org.elasticsearch.index.fielddata.IndexFieldData; import org.elasticsearch.index.fielddata.IndexNumericFieldData.NumericType; @@ -87,7 +87,7 @@ private static NumberFieldMapper toType(FieldMapper in) { return (NumberFieldMapper) in; } - private static final Version MINIMUM_COMPATIBILITY_VERSION = Version.fromString("5.0.0"); + private static final IndexVersion MINIMUM_COMPATIBILITY_VERSION = IndexVersion.fromId(5000099); public static class Builder extends FieldMapper.Builder { @@ -121,7 +121,7 @@ public static class Builder extends FieldMapper.Builder { private final NumberType type; private boolean allowMultipleValues = true; - private final Version indexCreatedVersion; + private final IndexVersion indexCreatedVersion; private final IndexMode indexMode; @@ -130,13 +130,13 @@ public Builder( NumberType type, ScriptCompiler compiler, Settings settings, - Version indexCreatedVersion, + IndexVersion indexCreatedVersion, IndexMode mode ) { this(name, type, compiler, IGNORE_MALFORMED_SETTING.get(settings), COERCE_SETTING.get(settings), indexCreatedVersion, mode); } - public static Builder docValuesOnly(String name, NumberType type, Version indexCreatedVersion) { + public static Builder docValuesOnly(String name, NumberType type, IndexVersion indexCreatedVersion) { Builder builder = new Builder(name, type, ScriptCompiler.NONE, false, false, indexCreatedVersion, null); builder.indexed.setValue(false); builder.dimension.setValue(false); @@ -149,7 +149,7 @@ public Builder( ScriptCompiler compiler, boolean ignoreMalformedByDefault, boolean coerceByDefault, - Version indexCreatedVersion, + IndexVersion indexCreatedVersion, IndexMode mode ) { super(name); @@ -1690,7 +1690,7 @@ public MetricType getMetricType() { private final Script script; private final MetricType metricType; private boolean allowMultipleValues; - private final Version indexCreatedVersion; + private final IndexVersion indexCreatedVersion; private final boolean storeMalformedFields; private final IndexMode indexMode; diff --git a/server/src/main/java/org/elasticsearch/index/mapper/ObjectMapper.java b/server/src/main/java/org/elasticsearch/index/mapper/ObjectMapper.java index 49d2468bc80d4..c59e25e54ae70 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/ObjectMapper.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/ObjectMapper.java @@ -10,11 +10,11 @@ import org.apache.lucene.index.LeafReader; import org.elasticsearch.ElasticsearchParseException; -import org.elasticsearch.Version; import org.elasticsearch.common.Explicit; import org.elasticsearch.common.logging.DeprecationCategory; import org.elasticsearch.common.logging.DeprecationLogger; import org.elasticsearch.common.xcontent.support.XContentMapValues; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.mapper.MapperService.MergeReason; import org.elasticsearch.xcontent.ToXContent; import org.elasticsearch.xcontent.XContentBuilder; @@ -183,7 +183,7 @@ public ObjectMapper build(MapperBuilderContext context) { public static class TypeParser implements Mapper.TypeParser { @Override - public boolean supportsVersion(Version indexCreatedVersion) { + public boolean supportsVersion(IndexVersion indexCreatedVersion) { return true; } @@ -348,11 +348,11 @@ protected static void parseProperties( } } - private static void validateFieldName(String fieldName, Version indexCreatedVersion) { + private static void validateFieldName(String fieldName, IndexVersion indexCreatedVersion) { if (fieldName.isEmpty()) { throw new IllegalArgumentException("field name cannot be an empty string"); } - if (fieldName.isBlank() & indexCreatedVersion.onOrAfter(Version.V_8_6_0)) { + if (fieldName.isBlank() & indexCreatedVersion.onOrAfter(IndexVersion.V_8_6_0)) { // blank field names were previously accepted in mappings, but not in documents. throw new IllegalArgumentException("field name cannot contain only whitespaces"); } @@ -403,7 +403,7 @@ protected ObjectMapper clone() { /** * @return a Builder that will produce an empty ObjectMapper with the same configuration as this one */ - public ObjectMapper.Builder newBuilder(Version indexVersionCreated) { + public ObjectMapper.Builder newBuilder(IndexVersion indexVersionCreated) { ObjectMapper.Builder builder = new ObjectMapper.Builder(simpleName(), subobjects); builder.enabled = this.enabled; builder.dynamic = this.dynamic; diff --git a/server/src/main/java/org/elasticsearch/index/mapper/RootObjectMapper.java b/server/src/main/java/org/elasticsearch/index/mapper/RootObjectMapper.java index 96d494a44b8f6..fa8aef1317cb1 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/RootObjectMapper.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/RootObjectMapper.java @@ -9,12 +9,12 @@ package org.elasticsearch.index.mapper; import org.elasticsearch.ElasticsearchParseException; -import org.elasticsearch.Version; import org.elasticsearch.common.Explicit; import org.elasticsearch.common.Strings; import org.elasticsearch.common.logging.DeprecationCategory; import org.elasticsearch.common.logging.DeprecationLogger; import org.elasticsearch.common.time.DateFormatter; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.mapper.DynamicTemplate.XContentFieldType; import org.elasticsearch.index.mapper.MapperService.MergeReason; import org.elasticsearch.xcontent.ToXContent; @@ -154,7 +154,7 @@ protected ObjectMapper clone() { } @Override - public RootObjectMapper.Builder newBuilder(Version indexVersionCreated) { + public RootObjectMapper.Builder newBuilder(IndexVersion indexVersionCreated) { RootObjectMapper.Builder builder = new RootObjectMapper.Builder(name(), subobjects); builder.enabled = enabled; builder.dynamic = dynamic; @@ -334,7 +334,7 @@ private static void validateDynamicTemplate(MappingParserContext parserContext, String format = "dynamic template [%s] has invalid content [%s], " + "attempted to validate it with the following match_mapping_type: %s"; String message = String.format(Locale.ROOT, format, template.getName(), Strings.toString(template), Arrays.toString(types)); - final boolean failInvalidDynamicTemplates = parserContext.indexVersionCreated().onOrAfter(Version.V_8_0_0); + final boolean failInvalidDynamicTemplates = parserContext.indexVersionCreated().onOrAfter(IndexVersion.V_8_0_0); if (failInvalidDynamicTemplates) { throw new IllegalArgumentException(message, lastError); } else { diff --git a/server/src/main/java/org/elasticsearch/index/mapper/TextFieldMapper.java b/server/src/main/java/org/elasticsearch/index/mapper/TextFieldMapper.java index d4ebba385940f..63ea7a9a4a291 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/TextFieldMapper.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/TextFieldMapper.java @@ -47,13 +47,13 @@ import org.apache.lucene.util.automaton.Automaton; import org.apache.lucene.util.automaton.Operations; import org.elasticsearch.ElasticsearchException; -import org.elasticsearch.Version; import org.elasticsearch.common.lucene.Lucene; import org.elasticsearch.common.lucene.search.AutomatonQueries; import org.elasticsearch.common.lucene.search.MultiPhrasePrefixQuery; import org.elasticsearch.common.unit.Fuzziness; import org.elasticsearch.common.xcontent.support.XContentMapValues; import org.elasticsearch.core.Nullable; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.analysis.AnalyzerScope; import org.elasticsearch.index.analysis.IndexAnalyzers; import org.elasticsearch.index.analysis.NamedAnalyzer; @@ -233,7 +233,7 @@ private static FielddataFrequencyFilter parseFrequencyFilter(String name, Mappin public static class Builder extends FieldMapper.Builder { - private final Version indexCreatedVersion; + private final IndexVersion indexCreatedVersion; private final Parameter index = Parameter.indexParam(m -> ((TextFieldMapper) m).index, true); private final Parameter store = Parameter.storeParam(m -> ((TextFieldMapper) m).store, false); @@ -277,10 +277,10 @@ public static class Builder extends FieldMapper.Builder { final TextParams.Analyzers analyzers; public Builder(String name, IndexAnalyzers indexAnalyzers) { - this(name, Version.CURRENT, indexAnalyzers); + this(name, IndexVersion.CURRENT, indexAnalyzers); } - public Builder(String name, Version indexCreatedVersion, IndexAnalyzers indexAnalyzers) { + public Builder(String name, IndexVersion indexCreatedVersion, IndexAnalyzers indexAnalyzers) { super(name); this.indexCreatedVersion = indexCreatedVersion; this.analyzers = new TextParams.Analyzers( @@ -341,7 +341,7 @@ private TextFieldType buildFieldType( FieldType fieldType, MultiFields multiFields, MapperBuilderContext context, - Version indexCreatedVersion + IndexVersion indexCreatedVersion ) { NamedAnalyzer searchAnalyzer = analyzers.getSearchAnalyzer(); NamedAnalyzer searchQuoteAnalyzer = analyzers.getSearchQuoteAnalyzer(); @@ -404,7 +404,7 @@ private SubFieldInfo buildPrefixInfo(MapperBuilderContext context, FieldType fie * or a multi-field). This way search will continue to work on old indices and new indices * will use the expected full name. */ - String fullName = indexCreatedVersion.before(Version.V_7_2_1) ? name() : context.buildFullName(name); + String fullName = indexCreatedVersion.before(IndexVersion.V_7_2_1) ? name() : context.buildFullName(name); // Copy the index options of the main field to allow phrase queries on // the prefix field. FieldType pft = new FieldType(fieldType); @@ -502,7 +502,7 @@ public TextFieldMapper build(MapperBuilderContext context) { } } - private static final Version MINIMUM_COMPATIBILITY_VERSION = Version.fromString("5.0.0"); + private static final IndexVersion MINIMUM_COMPATIBILITY_VERSION = IndexVersion.fromId(5000099); public static final TypeParser PARSER = new TypeParser( (n, c) -> new Builder(n, c.indexVersionCreated(), c.getIndexAnalyzers()), @@ -1132,7 +1132,7 @@ public Query existsQuery(SearchExecutionContext context) { } - private final Version indexCreatedVersion; + private final IndexVersion indexCreatedVersion; private final boolean index; private final boolean store; private final String indexOptions; diff --git a/server/src/main/java/org/elasticsearch/index/mapper/TextParams.java b/server/src/main/java/org/elasticsearch/index/mapper/TextParams.java index 8859f97624457..1287e8cb4b780 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/TextParams.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/TextParams.java @@ -10,7 +10,7 @@ import org.apache.lucene.document.FieldType; import org.apache.lucene.index.IndexOptions; -import org.elasticsearch.Version; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.analysis.AnalysisMode; import org.elasticsearch.index.analysis.AnalysisRegistry; import org.elasticsearch.index.analysis.IndexAnalyzers; @@ -40,7 +40,7 @@ public Analyzers( IndexAnalyzers indexAnalyzers, Function analyzerInitFunction, Function positionGapInitFunction, - Version indexCreatedVersion + IndexVersion indexCreatedVersion ) { this.indexAnalyzer = Parameter.analyzerParam( diff --git a/server/src/main/java/org/elasticsearch/index/mapper/TypeParsers.java b/server/src/main/java/org/elasticsearch/index/mapper/TypeParsers.java index 35399502a8fec..c42c4df01c5fa 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/TypeParsers.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/TypeParsers.java @@ -8,10 +8,10 @@ package org.elasticsearch.index.mapper; -import org.elasticsearch.Version; import org.elasticsearch.common.logging.DeprecationCategory; import org.elasticsearch.common.logging.DeprecationLogger; import org.elasticsearch.common.time.DateFormatter; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.similarity.SimilarityProvider; import java.util.ArrayList; @@ -88,7 +88,7 @@ public static boolean parseMultiField( if (parserContext.isWithinMultiField()) { // For indices created prior to 8.0, we only emit a deprecation warning and do not fail type parsing. This is to // maintain the backwards-compatibility guarantee that we can always load indexes from the previous major version. - if (parserContext.indexVersionCreated().before(Version.V_8_0_0)) { + if (parserContext.indexVersionCreated().before(IndexVersion.V_8_0_0)) { deprecationLogger.warn( DeprecationCategory.INDICES, "multifield_within_multifield", diff --git a/server/src/main/java/org/elasticsearch/index/mapper/vectors/DenseVectorFieldMapper.java b/server/src/main/java/org/elasticsearch/index/mapper/vectors/DenseVectorFieldMapper.java index 67ef144ecd406..8cc55fb7ce4a8 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/vectors/DenseVectorFieldMapper.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/vectors/DenseVectorFieldMapper.java @@ -24,8 +24,8 @@ import org.apache.lucene.search.KnnFloatVectorQuery; import org.apache.lucene.search.Query; import org.apache.lucene.util.BytesRef; -import org.elasticsearch.Version; import org.elasticsearch.common.xcontent.support.XContentMapValues; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.fielddata.FieldDataContext; import org.elasticsearch.index.fielddata.IndexFieldData; import org.elasticsearch.index.mapper.ArraySourceValueFetcher; @@ -65,8 +65,8 @@ * A {@link FieldMapper} for indexing a dense vector of floats. */ public class DenseVectorFieldMapper extends FieldMapper { - public static final Version MAGNITUDE_STORED_INDEX_VERSION = Version.V_7_5_0; - public static final Version LITTLE_ENDIAN_FLOAT_STORED_INDEX_VERSION = Version.V_8_9_0; + public static final IndexVersion MAGNITUDE_STORED_INDEX_VERSION = IndexVersion.V_7_5_0; + public static final IndexVersion LITTLE_ENDIAN_FLOAT_STORED_INDEX_VERSION = IndexVersion.V_8_9_0; public static final String CONTENT_TYPE = "dense_vector"; public static short MAX_DIMS_COUNT = 2048; // maximum allowed number of dimensions @@ -128,9 +128,9 @@ public static class Builder extends FieldMapper.Builder { ); private final Parameter> meta = Parameter.metaParam(); - final Version indexVersionCreated; + final IndexVersion indexVersionCreated; - public Builder(String name, Version indexVersionCreated) { + public Builder(String name, IndexVersion indexVersionCreated) { super(name); this.indexVersionCreated = indexVersionCreated; @@ -358,7 +358,7 @@ public Field parseKnnVector(DocumentParserContext context, DenseVectorFieldMappe } @Override - ByteBuffer createByteBuffer(Version indexVersion, int numBytes) { + ByteBuffer createByteBuffer(IndexVersion indexVersion, int numBytes) { return ByteBuffer.wrap(new byte[numBytes]); } }, @@ -470,7 +470,7 @@ public Field parseKnnVector(DocumentParserContext context, DenseVectorFieldMappe } @Override - ByteBuffer createByteBuffer(Version indexVersion, int numBytes) { + ByteBuffer createByteBuffer(IndexVersion indexVersion, int numBytes) { return indexVersion.onOrAfter(LITTLE_ENDIAN_FLOAT_STORED_INDEX_VERSION) ? ByteBuffer.wrap(new byte[numBytes]).order(ByteOrder.LITTLE_ENDIAN) : ByteBuffer.wrap(new byte[numBytes]); @@ -498,7 +498,7 @@ ByteBuffer createByteBuffer(Version indexVersion, int numBytes) { abstract double parseKnnVectorToByteBuffer(DocumentParserContext context, DenseVectorFieldMapper fieldMapper, ByteBuffer byteBuffer) throws IOException; - abstract ByteBuffer createByteBuffer(Version indexVersion, int numBytes); + abstract ByteBuffer createByteBuffer(IndexVersion indexVersion, int numBytes); public abstract void checkVectorBounds(float[] vector); @@ -701,11 +701,11 @@ public static final class DenseVectorFieldType extends SimpleMappedFieldType { private final int dims; private final boolean indexed; private final VectorSimilarity similarity; - private final Version indexVersionCreated; + private final IndexVersion indexVersionCreated; public DenseVectorFieldType( String name, - Version indexVersionCreated, + IndexVersion indexVersionCreated, ElementType elementType, int dims, boolean indexed, @@ -861,7 +861,7 @@ ElementType getElementType() { private final boolean indexed; private final VectorSimilarity similarity; private final IndexOptions indexOptions; - private final Version indexCreatedVersion; + private final IndexVersion indexCreatedVersion; private DenseVectorFieldMapper( String simpleName, @@ -871,7 +871,7 @@ private DenseVectorFieldMapper( boolean indexed, VectorSimilarity similarity, IndexOptions indexOptions, - Version indexCreatedVersion, + IndexVersion indexCreatedVersion, MultiFields multiFields, CopyTo copyTo ) { @@ -1089,9 +1089,9 @@ public void write(XContentBuilder b) throws IOException { private class DocValuesSyntheticFieldLoader implements SourceLoader.SyntheticFieldLoader { private BinaryDocValues values; private boolean hasValue; - private final Version indexCreatedVersion; + private final IndexVersion indexCreatedVersion; - private DocValuesSyntheticFieldLoader(Version indexCreatedVersion) { + private DocValuesSyntheticFieldLoader(IndexVersion indexCreatedVersion) { this.indexCreatedVersion = indexCreatedVersion; } diff --git a/server/src/main/java/org/elasticsearch/index/mapper/vectors/SparseVectorFieldMapper.java b/server/src/main/java/org/elasticsearch/index/mapper/vectors/SparseVectorFieldMapper.java index 0264d83d45fe1..ba45a700eebb5 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/vectors/SparseVectorFieldMapper.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/vectors/SparseVectorFieldMapper.java @@ -9,9 +9,9 @@ package org.elasticsearch.index.mapper.vectors; import org.apache.lucene.search.Query; -import org.elasticsearch.Version; import org.elasticsearch.common.logging.DeprecationCategory; import org.elasticsearch.common.logging.DeprecationLogger; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.mapper.DocumentParserContext; import org.elasticsearch.index.mapper.FieldMapper; import org.elasticsearch.index.mapper.MappedFieldType; @@ -65,7 +65,7 @@ public SparseVectorFieldMapper build(MapperBuilderContext context) { } public static final TypeParser PARSER = new TypeParser((n, c) -> { - if (c.indexVersionCreated().onOrAfter(Version.V_8_0_0)) { + if (c.indexVersionCreated().onOrAfter(IndexVersion.V_8_0_0)) { throw new IllegalArgumentException(ERROR_MESSAGE); } else { deprecationLogger.warn(DeprecationCategory.MAPPINGS, "sparse_vector", ERROR_MESSAGE_7X); diff --git a/server/src/main/java/org/elasticsearch/index/mapper/vectors/VectorDVLeafFieldData.java b/server/src/main/java/org/elasticsearch/index/mapper/vectors/VectorDVLeafFieldData.java index d8afdd8e2d06e..d66b429e6dd95 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/vectors/VectorDVLeafFieldData.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/vectors/VectorDVLeafFieldData.java @@ -11,7 +11,7 @@ import org.apache.lucene.index.BinaryDocValues; import org.apache.lucene.index.DocValues; import org.apache.lucene.index.LeafReader; -import org.elasticsearch.Version; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.fielddata.LeafFieldData; import org.elasticsearch.index.fielddata.SortedBinaryDocValues; import org.elasticsearch.index.mapper.vectors.DenseVectorFieldMapper.ElementType; @@ -27,12 +27,12 @@ final class VectorDVLeafFieldData implements LeafFieldData { private final LeafReader reader; private final String field; - private final Version indexVersion; + private final IndexVersion indexVersion; private final ElementType elementType; private final int dims; private final boolean indexed; - VectorDVLeafFieldData(LeafReader reader, String field, Version indexVersion, ElementType elementType, int dims, boolean indexed) { + VectorDVLeafFieldData(LeafReader reader, String field, IndexVersion indexVersion, ElementType elementType, int dims, boolean indexed) { this.reader = reader; this.field = field; this.indexVersion = indexVersion; diff --git a/server/src/main/java/org/elasticsearch/index/mapper/vectors/VectorEncoderDecoder.java b/server/src/main/java/org/elasticsearch/index/mapper/vectors/VectorEncoderDecoder.java index c8866df5bc626..381c1767edff3 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/vectors/VectorEncoderDecoder.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/vectors/VectorEncoderDecoder.java @@ -9,7 +9,7 @@ package org.elasticsearch.index.mapper.vectors; import org.apache.lucene.util.BytesRef; -import org.elasticsearch.Version; +import org.elasticsearch.index.IndexVersion; import java.nio.ByteBuffer; import java.nio.ByteOrder; @@ -23,7 +23,7 @@ public final class VectorEncoderDecoder { private VectorEncoderDecoder() {} - public static int denseVectorLength(Version indexVersion, BytesRef vectorBR) { + public static int denseVectorLength(IndexVersion indexVersion, BytesRef vectorBR) { return indexVersion.onOrAfter(MAGNITUDE_STORED_INDEX_VERSION) ? (vectorBR.length - INT_BYTES) / INT_BYTES : vectorBR.length / INT_BYTES; @@ -34,7 +34,7 @@ public static int denseVectorLength(Version indexVersion, BytesRef vectorBR) { * NOTE: this function can only be called on vectors from an index version greater than or * equal to 7.5.0, since vectors created prior to that do not store the magnitude. */ - public static float decodeMagnitude(Version indexVersion, BytesRef vectorBR) { + public static float decodeMagnitude(IndexVersion indexVersion, BytesRef vectorBR) { assert indexVersion.onOrAfter(MAGNITUDE_STORED_INDEX_VERSION); ByteBuffer byteBuffer = indexVersion.onOrAfter(LITTLE_ENDIAN_FLOAT_STORED_INDEX_VERSION) ? ByteBuffer.wrap(vectorBR.bytes, vectorBR.offset, vectorBR.length).order(ByteOrder.LITTLE_ENDIAN) @@ -54,7 +54,7 @@ private static float calculateMagnitude(float[] decodedVector) { return (float) magnitude; } - public static float getMagnitude(Version indexVersion, BytesRef vectorBR, float[] decodedVector) { + public static float getMagnitude(IndexVersion indexVersion, BytesRef vectorBR, float[] decodedVector) { if (vectorBR == null) { throw new IllegalArgumentException(DenseVectorScriptDocValues.MISSING_VECTOR_FIELD_MESSAGE); } @@ -70,7 +70,7 @@ public static float getMagnitude(Version indexVersion, BytesRef vectorBR, float[ * @param vectorBR - dense vector encoded in BytesRef * @param vector - array of floats where the decoded vector should be stored */ - public static void decodeDenseVector(Version indexVersion, BytesRef vectorBR, float[] vector) { + public static void decodeDenseVector(IndexVersion indexVersion, BytesRef vectorBR, float[] vector) { if (vectorBR == null) { throw new IllegalArgumentException(DenseVectorScriptDocValues.MISSING_VECTOR_FIELD_MESSAGE); } diff --git a/server/src/main/java/org/elasticsearch/index/mapper/vectors/VectorIndexFieldData.java b/server/src/main/java/org/elasticsearch/index/mapper/vectors/VectorIndexFieldData.java index 16285c6a3f9f7..6ebfd1f57088b 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/vectors/VectorIndexFieldData.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/vectors/VectorIndexFieldData.java @@ -10,9 +10,9 @@ import org.apache.lucene.index.LeafReaderContext; import org.apache.lucene.search.SortField; -import org.elasticsearch.Version; import org.elasticsearch.common.util.BigArrays; import org.elasticsearch.core.Nullable; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.fielddata.IndexFieldData; import org.elasticsearch.index.fielddata.IndexFieldData.XFieldComparatorSource.Nested; import org.elasticsearch.index.fielddata.IndexFieldDataCache; @@ -28,7 +28,7 @@ public class VectorIndexFieldData implements IndexFieldData(); this.routingTable = null; this.replicationGroup = null; - this.hasAllPeerRecoveryRetentionLeases = indexSettings.getIndexVersionCreated().onOrAfter(Version.V_7_6_0) + this.hasAllPeerRecoveryRetentionLeases = indexSettings.getIndexVersionCreated().onOrAfter(IndexVersion.V_7_6_0) || (indexSettings.isSoftDeleteEnabled() - && indexSettings.getIndexVersionCreated().onOrAfter(Version.V_7_4_0) + && indexSettings.getIndexVersionCreated().onOrAfter(IndexVersion.V_7_4_0) && indexSettings.getIndexMetadata().getState() == IndexMetadata.State.OPEN); this.fileBasedRecoveryThreshold = IndexSettings.FILE_BASED_RECOVERY_THRESHOLD_SETTING.get(indexSettings.getSettings()); this.safeCommitInfoSupplier = safeCommitInfoSupplier; this.onReplicationGroupUpdated = onReplicationGroupUpdated; - assert Version.V_EMPTY.equals(indexSettings.getIndexVersionCreated()) == false; + assert IndexVersion.ZERO.equals(indexSettings.getIndexVersionCreated()) == false; assert invariant(); } diff --git a/server/src/main/java/org/elasticsearch/index/shard/IndexShard.java b/server/src/main/java/org/elasticsearch/index/shard/IndexShard.java index 945569de587fc..c9474a67638fd 100644 --- a/server/src/main/java/org/elasticsearch/index/shard/IndexShard.java +++ b/server/src/main/java/org/elasticsearch/index/shard/IndexShard.java @@ -70,6 +70,7 @@ import org.elasticsearch.index.IndexNotFoundException; import org.elasticsearch.index.IndexService; import org.elasticsearch.index.IndexSettings; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.VersionType; import org.elasticsearch.index.bulk.stats.BulkOperationListener; import org.elasticsearch.index.bulk.stats.BulkStats; @@ -3168,7 +3169,7 @@ public RetentionLease addPeerRecoveryRetentionLease( ) { assert assertPrimaryMode(); // only needed for BWC reasons involving rolling upgrades from versions that do not support PRRLs: - assert indexSettings.getIndexVersionCreated().before(Version.V_7_4_0) || indexSettings.isSoftDeleteEnabled() == false; + assert indexSettings.getIndexVersionCreated().before(IndexVersion.V_7_4_0) || indexSettings.isSoftDeleteEnabled() == false; return replicationTracker.addPeerRecoveryRetentionLease(nodeId, globalCheckpoint, listener); } diff --git a/server/src/main/java/org/elasticsearch/index/shard/ShardSplittingQuery.java b/server/src/main/java/org/elasticsearch/index/shard/ShardSplittingQuery.java index b98d9f2c3fbac..3ab70a37a3c01 100644 --- a/server/src/main/java/org/elasticsearch/index/shard/ShardSplittingQuery.java +++ b/server/src/main/java/org/elasticsearch/index/shard/ShardSplittingQuery.java @@ -30,10 +30,10 @@ import org.apache.lucene.util.BitSetIterator; import org.apache.lucene.util.BytesRef; import org.apache.lucene.util.FixedBitSet; -import org.elasticsearch.Version; import org.elasticsearch.cluster.metadata.IndexMetadata; import org.elasticsearch.cluster.routing.IndexRouting; import org.elasticsearch.common.lucene.search.Queries; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.cache.bitset.BitsetFilterCache; import org.elasticsearch.index.mapper.IdFieldMapper; import org.elasticsearch.index.mapper.RoutingFieldMapper; @@ -59,7 +59,7 @@ final class ShardSplittingQuery extends Query { this.indexMetadata = indexMetadata; this.indexRouting = IndexRouting.fromIndexMetadata(indexMetadata); this.shardId = shardId; - this.nestedParentBitSetProducer = hasNested ? newParentDocBitSetProducer(indexMetadata.getCreationVersion()) : null; + this.nestedParentBitSetProducer = hasNested ? newParentDocBitSetProducer(indexMetadata.getCreationVersion().indexVersion) : null; } @Override @@ -340,7 +340,7 @@ public float matchCost() { * than once. There is no point in using BitsetFilterCache#BitSetProducerWarmer since we use this only as a delete by query which is * executed on a recovery-private index writer. There is no point in caching it and it won't have a cache hit either. */ - private static BitSetProducer newParentDocBitSetProducer(Version indexCreationVersion) { + private static BitSetProducer newParentDocBitSetProducer(IndexVersion indexCreationVersion) { return context -> BitsetFilterCache.bitsetFromQuery(Queries.newNonNestedFilter(indexCreationVersion), context); } } diff --git a/server/src/main/java/org/elasticsearch/index/similarity/ScriptedSimilarityProvider.java b/server/src/main/java/org/elasticsearch/index/similarity/ScriptedSimilarityProvider.java index d77338a44abb3..28b93edac3895 100644 --- a/server/src/main/java/org/elasticsearch/index/similarity/ScriptedSimilarityProvider.java +++ b/server/src/main/java/org/elasticsearch/index/similarity/ScriptedSimilarityProvider.java @@ -9,19 +9,19 @@ package org.elasticsearch.index.similarity; import org.apache.lucene.search.similarities.Similarity; -import org.elasticsearch.Version; import org.elasticsearch.common.TriFunction; import org.elasticsearch.common.settings.Settings; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.script.Script; import org.elasticsearch.script.ScriptService; import org.elasticsearch.script.SimilarityScript; import org.elasticsearch.script.SimilarityWeightScript; /** Provider of scripted similarities. */ -final class ScriptedSimilarityProvider implements TriFunction { +final class ScriptedSimilarityProvider implements TriFunction { @Override - public Similarity apply(Settings settings, Version indexCreatedVersion, ScriptService scriptService) { + public Similarity apply(Settings settings, IndexVersion indexCreatedVersion, ScriptService scriptService) { boolean discountOverlaps = settings.getAsBoolean(SimilarityProviders.DISCOUNT_OVERLAPS, true); Settings scriptSettings = settings.getAsSettings("script"); Script script = Script.parse(scriptSettings); diff --git a/server/src/main/java/org/elasticsearch/index/similarity/SimilarityProviders.java b/server/src/main/java/org/elasticsearch/index/similarity/SimilarityProviders.java index a7067cca3c2d9..cc701eef7d063 100644 --- a/server/src/main/java/org/elasticsearch/index/similarity/SimilarityProviders.java +++ b/server/src/main/java/org/elasticsearch/index/similarity/SimilarityProviders.java @@ -37,10 +37,10 @@ import org.apache.lucene.search.similarities.NormalizationH2; import org.apache.lucene.search.similarities.NormalizationH3; import org.apache.lucene.search.similarities.NormalizationZ; -import org.elasticsearch.Version; import org.elasticsearch.common.logging.DeprecationCategory; import org.elasticsearch.common.logging.DeprecationLogger; import org.elasticsearch.common.settings.Settings; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.lucene.similarity.LegacyBM25Similarity; import java.util.Arrays; @@ -93,14 +93,14 @@ private SimilarityProviders() {} // no instantiation * @param settings Settings to parse * @return {@link BasicModel} referred to in the Settings */ - private static BasicModel parseBasicModel(Version indexCreatedVersion, Settings settings) { + private static BasicModel parseBasicModel(IndexVersion indexCreatedVersion, Settings settings) { String basicModel = settings.get("basic_model"); BasicModel model = BASIC_MODELS.get(basicModel); if (model == null) { String replacement = LEGACY_BASIC_MODELS.get(basicModel); if (replacement != null) { - if (indexCreatedVersion.onOrAfter(Version.V_7_0_0)) { + if (indexCreatedVersion.onOrAfter(IndexVersion.V_7_0_0)) { throw new IllegalArgumentException( "Basic model [" + basicModel + "] isn't supported anymore, " + "please use another model." ); @@ -132,14 +132,14 @@ private static BasicModel parseBasicModel(Version indexCreatedVersion, Settings * @param settings Settings to parse * @return {@link AfterEffect} referred to in the Settings */ - private static AfterEffect parseAfterEffect(Version indexCreatedVersion, Settings settings) { + private static AfterEffect parseAfterEffect(IndexVersion indexCreatedVersion, Settings settings) { String afterEffect = settings.get("after_effect"); AfterEffect effect = AFTER_EFFECTS.get(afterEffect); if (effect == null) { String replacement = LEGACY_AFTER_EFFECTS.get(afterEffect); if (replacement != null) { - if (indexCreatedVersion.onOrAfter(Version.V_7_0_0)) { + if (indexCreatedVersion.onOrAfter(IndexVersion.V_7_0_0)) { throw new IllegalArgumentException( "After effect [" + afterEffect + "] isn't supported anymore, please use another effect." ); @@ -234,12 +234,12 @@ private static Lambda parseLambda(Settings settings) { return lambda; } - static void assertSettingsIsSubsetOf(String type, Version version, Settings settings, String... supportedSettings) { + static void assertSettingsIsSubsetOf(String type, IndexVersion version, Settings settings, String... supportedSettings) { Set unknownSettings = new HashSet<>(settings.keySet()); unknownSettings.removeAll(Arrays.asList(supportedSettings)); unknownSettings.remove("type"); // used to figure out which sim this is if (unknownSettings.isEmpty() == false) { - if (version.onOrAfter(Version.V_7_0_0)) { + if (version.onOrAfter(IndexVersion.V_7_0_0)) { throw new IllegalArgumentException("Unknown settings for similarity of type [" + type + "]: " + unknownSettings); } else { deprecationLogger.warn( @@ -251,7 +251,7 @@ static void assertSettingsIsSubsetOf(String type, Version version, Settings sett } } - public static LegacyBM25Similarity createBM25Similarity(Settings settings, Version indexCreatedVersion) { + public static LegacyBM25Similarity createBM25Similarity(Settings settings, IndexVersion indexCreatedVersion) { assertSettingsIsSubsetOf("BM25", indexCreatedVersion, settings, "k1", "b", DISCOUNT_OVERLAPS); float k1 = settings.getAsFloat("k1", 1.2f); @@ -261,12 +261,12 @@ public static LegacyBM25Similarity createBM25Similarity(Settings settings, Versi return new LegacyBM25Similarity(k1, b, discountOverlaps); } - public static BooleanSimilarity createBooleanSimilarity(Settings settings, Version indexCreatedVersion) { + public static BooleanSimilarity createBooleanSimilarity(Settings settings, IndexVersion indexCreatedVersion) { assertSettingsIsSubsetOf("boolean", indexCreatedVersion, settings); return new BooleanSimilarity(); } - public static DFRSimilarity createDfrSimilarity(Settings settings, Version indexCreatedVersion) { + public static DFRSimilarity createDfrSimilarity(Settings settings, IndexVersion indexCreatedVersion) { assertSettingsIsSubsetOf( "DFR", indexCreatedVersion, @@ -287,13 +287,13 @@ public static DFRSimilarity createDfrSimilarity(Settings settings, Version index ); } - public static DFISimilarity createDfiSimilarity(Settings settings, Version indexCreatedVersion) { + public static DFISimilarity createDfiSimilarity(Settings settings, IndexVersion indexCreatedVersion) { assertSettingsIsSubsetOf("DFI", indexCreatedVersion, settings, "independence_measure"); return new DFISimilarity(parseIndependence(settings)); } - public static IBSimilarity createIBSimilarity(Settings settings, Version indexCreatedVersion) { + public static IBSimilarity createIBSimilarity(Settings settings, IndexVersion indexCreatedVersion) { assertSettingsIsSubsetOf( "IB", indexCreatedVersion, @@ -310,14 +310,14 @@ public static IBSimilarity createIBSimilarity(Settings settings, Version indexCr return new IBSimilarity(parseDistribution(settings), parseLambda(settings), parseNormalization(settings)); } - public static LMDirichletSimilarity createLMDirichletSimilarity(Settings settings, Version indexCreatedVersion) { + public static LMDirichletSimilarity createLMDirichletSimilarity(Settings settings, IndexVersion indexCreatedVersion) { assertSettingsIsSubsetOf("LMDirichlet", indexCreatedVersion, settings, "mu"); float mu = settings.getAsFloat("mu", 2000f); return new LMDirichletSimilarity(mu); } - public static LMJelinekMercerSimilarity createLMJelinekMercerSimilarity(Settings settings, Version indexCreatedVersion) { + public static LMJelinekMercerSimilarity createLMJelinekMercerSimilarity(Settings settings, IndexVersion indexCreatedVersion) { assertSettingsIsSubsetOf("LMJelinekMercer", indexCreatedVersion, settings, "lambda"); float lambda = settings.getAsFloat("lambda", 0.1f); diff --git a/server/src/main/java/org/elasticsearch/index/similarity/SimilarityService.java b/server/src/main/java/org/elasticsearch/index/similarity/SimilarityService.java index bc1c69c755d5f..1bdfb66ef9539 100644 --- a/server/src/main/java/org/elasticsearch/index/similarity/SimilarityService.java +++ b/server/src/main/java/org/elasticsearch/index/similarity/SimilarityService.java @@ -18,7 +18,6 @@ import org.apache.lucene.search.similarities.Similarity; import org.apache.lucene.search.similarities.Similarity.SimScorer; import org.apache.lucene.util.BytesRef; -import org.elasticsearch.Version; import org.elasticsearch.common.TriFunction; import org.elasticsearch.common.logging.DeprecationCategory; import org.elasticsearch.common.logging.DeprecationLogger; @@ -27,6 +26,7 @@ import org.elasticsearch.core.Nullable; import org.elasticsearch.index.IndexModule; import org.elasticsearch.index.IndexSettings; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.mapper.MappedFieldType; import org.elasticsearch.lucene.similarity.LegacyBM25Similarity; import org.elasticsearch.script.ScriptService; @@ -41,10 +41,10 @@ public final class SimilarityService { private static final DeprecationLogger deprecationLogger = DeprecationLogger.getLogger(SimilarityService.class); public static final String DEFAULT_SIMILARITY = "BM25"; - private static final Map>> DEFAULTS; - public static final Map> BUILT_IN; + private static final Map>> DEFAULTS; + public static final Map> BUILT_IN; static { - Map>> defaults = new HashMap<>(); + Map>> defaults = new HashMap<>(); defaults.put("BM25", version -> { final LegacyBM25Similarity similarity = SimilarityProviders.createBM25Similarity(Settings.EMPTY, version); return () -> similarity; @@ -54,7 +54,7 @@ public final class SimilarityService { return () -> similarity; }); - Map> builtIn = new HashMap<>(); + Map> builtIn = new HashMap<>(); builtIn.put("BM25", (settings, version, scriptService) -> SimilarityProviders.createBM25Similarity(settings, version)); builtIn.put("boolean", (settings, version, scriptService) -> SimilarityProviders.createBooleanSimilarity(settings, version)); builtIn.put("DFR", (settings, version, scriptService) -> SimilarityProviders.createDfrSimilarity(settings, version)); @@ -79,7 +79,7 @@ public final class SimilarityService { public SimilarityService( IndexSettings indexSettings, ScriptService scriptService, - Map> similarities + Map> similarities ) { Map> providers = Maps.newMapWithExpectedSize(similarities.size()); Map similaritySettings = indexSettings.getSettings().getGroups(IndexModule.SIMILARITY_SETTINGS_PREFIX); @@ -96,8 +96,8 @@ public SimilarityService( } else if ((similarities.containsKey(typeName) || BUILT_IN.containsKey(typeName)) == false) { throw new IllegalArgumentException("Unknown Similarity type [" + typeName + "] for [" + name + "]"); } - TriFunction defaultFactory = BUILT_IN.get(typeName); - TriFunction factory = similarities.getOrDefault(typeName, defaultFactory); + TriFunction defaultFactory = BUILT_IN.get(typeName); + TriFunction factory = similarities.getOrDefault(typeName, defaultFactory); Similarity similarity = factory.apply(providerSettings, indexSettings.getIndexVersionCreated(), scriptService); validateSimilarity(indexSettings.getIndexVersionCreated(), similarity); if (BUILT_IN.containsKey(typeName) == false || "scripted".equals(typeName)) { @@ -107,7 +107,7 @@ public SimilarityService( final Similarity similarityF = similarity; // like similarity but final providers.put(name, () -> similarityF); } - for (Map.Entry>> entry : DEFAULTS.entrySet()) { + for (Map.Entry>> entry : DEFAULTS.entrySet()) { providers.put(entry.getKey(), entry.getValue().apply(indexSettings.getIndexVersionCreated())); } this.similarities = providers; @@ -165,13 +165,13 @@ public Similarity get(String name) { } } - static void validateSimilarity(Version indexCreatedVersion, Similarity similarity) { + static void validateSimilarity(IndexVersion indexCreatedVersion, Similarity similarity) { validateScoresArePositive(indexCreatedVersion, similarity); validateScoresDoNotDecreaseWithFreq(indexCreatedVersion, similarity); validateScoresDoNotIncreaseWithNorm(indexCreatedVersion, similarity); } - private static void validateScoresArePositive(Version indexCreatedVersion, Similarity similarity) { + private static void validateScoresArePositive(IndexVersion indexCreatedVersion, Similarity similarity) { CollectionStatistics collectionStats = new CollectionStatistics("some_field", 1200, 1100, 3000, 2000); TermStatistics termStats = new TermStatistics(new BytesRef("some_value"), 100, 130); SimScorer scorer = similarity.scorer(2f, collectionStats, termStats); @@ -197,7 +197,7 @@ private static void validateScoresArePositive(Version indexCreatedVersion, Simil } } - private static void validateScoresDoNotDecreaseWithFreq(Version indexCreatedVersion, Similarity similarity) { + private static void validateScoresDoNotDecreaseWithFreq(IndexVersion indexCreatedVersion, Similarity similarity) { CollectionStatistics collectionStats = new CollectionStatistics("some_field", 1200, 1100, 3000, 2000); TermStatistics termStats = new TermStatistics(new BytesRef("some_value"), 100, 130); SimScorer scorer = similarity.scorer(2f, collectionStats, termStats); @@ -228,7 +228,7 @@ private static void validateScoresDoNotDecreaseWithFreq(Version indexCreatedVers } } - private static void validateScoresDoNotIncreaseWithNorm(Version indexCreatedVersion, Similarity similarity) { + private static void validateScoresDoNotIncreaseWithNorm(IndexVersion indexCreatedVersion, Similarity similarity) { CollectionStatistics collectionStats = new CollectionStatistics("some_field", 1200, 1100, 3000, 2000); TermStatistics termStats = new TermStatistics(new BytesRef("some_value"), 100, 130); SimScorer scorer = similarity.scorer(2f, collectionStats, termStats); diff --git a/server/src/main/java/org/elasticsearch/indices/analysis/AnalysisModule.java b/server/src/main/java/org/elasticsearch/indices/analysis/AnalysisModule.java index 742f7a3c226d8..adad3cd442474 100644 --- a/server/src/main/java/org/elasticsearch/indices/analysis/AnalysisModule.java +++ b/server/src/main/java/org/elasticsearch/indices/analysis/AnalysisModule.java @@ -18,6 +18,7 @@ import org.elasticsearch.common.settings.Settings; import org.elasticsearch.env.Environment; import org.elasticsearch.index.IndexSettings; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.analysis.AbstractTokenFilterFactory; import org.elasticsearch.index.analysis.AnalysisRegistry; import org.elasticsearch.index.analysis.AnalyzerProvider; @@ -135,7 +136,7 @@ private static NamedRegistry> setupTokenFil tokenFilters.register("standard", new AnalysisProvider() { @Override public TokenFilterFactory get(IndexSettings indexSettings, Environment environment, String name, Settings settings) { - if (indexSettings.getIndexVersionCreated().before(Version.V_7_0_0)) { + if (indexSettings.getIndexVersionCreated().before(IndexVersion.V_7_0_0)) { deprecationLogger.warn( DeprecationCategory.ANALYSIS, "standard_deprecation", diff --git a/server/src/main/java/org/elasticsearch/indices/recovery/RecoverySourceHandler.java b/server/src/main/java/org/elasticsearch/indices/recovery/RecoverySourceHandler.java index 68f21640ae44a..5a0f5df04ae04 100644 --- a/server/src/main/java/org/elasticsearch/indices/recovery/RecoverySourceHandler.java +++ b/server/src/main/java/org/elasticsearch/indices/recovery/RecoverySourceHandler.java @@ -18,7 +18,6 @@ import org.apache.lucene.store.RateLimiter; import org.apache.lucene.util.ArrayUtil; import org.elasticsearch.ExceptionsHelper; -import org.elasticsearch.Version; import org.elasticsearch.action.ActionListener; import org.elasticsearch.action.support.ListenableActionFuture; import org.elasticsearch.action.support.SubscribableListener; @@ -43,6 +42,7 @@ import org.elasticsearch.core.Releasables; import org.elasticsearch.core.TimeValue; import org.elasticsearch.core.Tuple; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.engine.Engine; import org.elasticsearch.index.engine.RecoveryEngineException; import org.elasticsearch.index.seqno.ReplicationTracker; @@ -971,7 +971,7 @@ void createRetentionLease(final long startingSeqNo, ActionListener filterProducer, Version indexVersionCreated) { + public NestedDocuments(MappingLookup mappingLookup, Function filterProducer, IndexVersion indexVersionCreated) { this.nestedLookup = mappingLookup.nestedLookup(); if (this.nestedLookup == NestedLookup.EMPTY) { this.parentDocumentFilter = null; diff --git a/server/src/main/java/org/elasticsearch/search/suggest/completion/context/ContextMapping.java b/server/src/main/java/org/elasticsearch/search/suggest/completion/context/ContextMapping.java index 35aa5b01fcedc..c48a1ccb12e6f 100644 --- a/server/src/main/java/org/elasticsearch/search/suggest/completion/context/ContextMapping.java +++ b/server/src/main/java/org/elasticsearch/search/suggest/completion/context/ContextMapping.java @@ -9,8 +9,8 @@ package org.elasticsearch.search.suggest.completion.context; import org.elasticsearch.ElasticsearchParseException; -import org.elasticsearch.Version; import org.elasticsearch.common.Strings; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.mapper.CompletionFieldMapper; import org.elasticsearch.index.mapper.DocumentParserContext; import org.elasticsearch.index.mapper.LuceneDocument; @@ -130,7 +130,7 @@ public final List parseQueryContext(XContentParser parser) * Checks if the current context is consistent with the rest of the fields. For example, the GeoContext * should check that the field that it points to has the correct type. */ - public void validateReferences(Version indexVersionCreated, Function fieldResolver) { + public void validateReferences(IndexVersion indexVersionCreated, Function fieldResolver) { // No validation is required by default } diff --git a/server/src/main/java/org/elasticsearch/search/suggest/completion/context/GeoContextMapping.java b/server/src/main/java/org/elasticsearch/search/suggest/completion/context/GeoContextMapping.java index 4b7dc551d9bbd..e4dffea062721 100644 --- a/server/src/main/java/org/elasticsearch/search/suggest/completion/context/GeoContextMapping.java +++ b/server/src/main/java/org/elasticsearch/search/suggest/completion/context/GeoContextMapping.java @@ -15,12 +15,12 @@ import org.apache.lucene.util.BytesRef; import org.apache.lucene.util.NumericUtils; import org.elasticsearch.ElasticsearchParseException; -import org.elasticsearch.Version; import org.elasticsearch.common.geo.GeoPoint; import org.elasticsearch.common.geo.GeoUtils; import org.elasticsearch.common.logging.DeprecationCategory; import org.elasticsearch.common.logging.DeprecationLogger; import org.elasticsearch.common.unit.DistanceUnit; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.mapper.DocumentParserContext; import org.elasticsearch.index.mapper.GeoPointFieldMapper; import org.elasticsearch.index.mapper.LuceneDocument; @@ -267,11 +267,11 @@ public List toInternalQueryContexts(List } @Override - public void validateReferences(Version indexVersionCreated, Function fieldResolver) { + public void validateReferences(IndexVersion indexVersionCreated, Function fieldResolver) { if (fieldName != null) { MappedFieldType mappedFieldType = fieldResolver.apply(fieldName); if (mappedFieldType == null) { - if (indexVersionCreated.before(Version.V_7_0_0)) { + if (indexVersionCreated.before(IndexVersion.V_7_0_0)) { deprecationLogger.warn( DeprecationCategory.MAPPINGS, "geo_context_mapping", @@ -287,7 +287,7 @@ public void validateReferences(Version indexVersionCreated, Function> IFD getForField(String type, String field final MapperBuilderContext context = MapperBuilderContext.root(false); if (type.equals("string")) { if (docValues) { - fieldType = new KeywordFieldMapper.Builder(fieldName, Version.CURRENT).build(context).fieldType(); + fieldType = new KeywordFieldMapper.Builder(fieldName, IndexVersion.CURRENT).build(context).fieldType(); } else { fieldType = new TextFieldMapper.Builder(fieldName, createDefaultIndexAnalyzers()).fielddata(true) .build(context) @@ -101,7 +101,7 @@ public > IFD getForField(String type, String field ScriptCompiler.NONE, false, true, - Version.CURRENT, + IndexVersion.CURRENT, null ).docValues(docValues).build(context).fieldType(); } else if (type.equals("double")) { @@ -111,7 +111,7 @@ public > IFD getForField(String type, String field ScriptCompiler.NONE, false, true, - Version.CURRENT, + IndexVersion.CURRENT, null ).docValues(docValues).build(context).fieldType(); } else if (type.equals("long")) { @@ -121,7 +121,7 @@ public > IFD getForField(String type, String field ScriptCompiler.NONE, false, true, - Version.CURRENT, + IndexVersion.CURRENT, null ).docValues(docValues).build(context).fieldType(); } else if (type.equals("int")) { @@ -131,7 +131,7 @@ public > IFD getForField(String type, String field ScriptCompiler.NONE, false, true, - Version.CURRENT, + IndexVersion.CURRENT, null ).docValues(docValues).build(context).fieldType(); } else if (type.equals("short")) { @@ -141,7 +141,7 @@ public > IFD getForField(String type, String field ScriptCompiler.NONE, false, true, - Version.CURRENT, + IndexVersion.CURRENT, null ).docValues(docValues).build(context).fieldType(); } else if (type.equals("byte")) { @@ -151,13 +151,13 @@ public > IFD getForField(String type, String field ScriptCompiler.NONE, false, true, - Version.CURRENT, + IndexVersion.CURRENT, null ).docValues(docValues).build(context).fieldType(); } else if (type.equals("geo_point")) { - fieldType = new GeoPointFieldMapper.Builder(fieldName, ScriptCompiler.NONE, false, Version.CURRENT, null).docValues(docValues) - .build(context) - .fieldType(); + fieldType = new GeoPointFieldMapper.Builder(fieldName, ScriptCompiler.NONE, false, IndexVersion.CURRENT, null).docValues( + docValues + ).build(context).fieldType(); } else if (type.equals("binary")) { fieldType = new BinaryFieldMapper.Builder(fieldName, docValues).build(context).fieldType(); } else { diff --git a/server/src/test/java/org/elasticsearch/index/fielddata/IndexFieldDataServiceTests.java b/server/src/test/java/org/elasticsearch/index/fielddata/IndexFieldDataServiceTests.java index 153dfcc89582c..aad6f2b6d9e5a 100644 --- a/server/src/test/java/org/elasticsearch/index/fielddata/IndexFieldDataServiceTests.java +++ b/server/src/test/java/org/elasticsearch/index/fielddata/IndexFieldDataServiceTests.java @@ -20,10 +20,10 @@ import org.apache.lucene.store.ByteBuffersDirectory; import org.apache.lucene.util.Accountable; import org.apache.lucene.util.SetOnce; -import org.elasticsearch.Version; import org.elasticsearch.common.lucene.index.ElasticsearchDirectoryReader; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.index.IndexService; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.fielddata.plain.SortedDoublesIndexFieldData; import org.elasticsearch.index.fielddata.plain.SortedNumericIndexFieldData; import org.elasticsearch.index.fielddata.plain.SortedSetOrdinalsIndexFieldData; @@ -78,17 +78,20 @@ public void testGetForFieldDefaults() { indicesService.getCircuitBreakerService() ); MapperBuilderContext context = MapperBuilderContext.root(false); - final MappedFieldType stringMapper = new KeywordFieldMapper.Builder("string", Version.CURRENT).build(context).fieldType(); + final MappedFieldType stringMapper = new KeywordFieldMapper.Builder("string", IndexVersion.CURRENT).build(context).fieldType(); ifdService.clear(); IndexFieldData fd = ifdService.getForField(stringMapper, FieldDataContext.noRuntimeFields("test")); assertTrue(fd instanceof SortedSetOrdinalsIndexFieldData); for (MappedFieldType mapper : Arrays.asList( - new NumberFieldMapper.Builder("int", BYTE, ScriptCompiler.NONE, false, true, Version.CURRENT, null).build(context).fieldType(), - new NumberFieldMapper.Builder("int", SHORT, ScriptCompiler.NONE, false, true, Version.CURRENT, null).build(context).fieldType(), - new NumberFieldMapper.Builder("int", INTEGER, ScriptCompiler.NONE, false, true, Version.CURRENT, null).build(context) + new NumberFieldMapper.Builder("int", BYTE, ScriptCompiler.NONE, false, true, IndexVersion.CURRENT, null).build(context) .fieldType(), - new NumberFieldMapper.Builder("long", LONG, ScriptCompiler.NONE, false, true, Version.CURRENT, null).build(context).fieldType() + new NumberFieldMapper.Builder("int", SHORT, ScriptCompiler.NONE, false, true, IndexVersion.CURRENT, null).build(context) + .fieldType(), + new NumberFieldMapper.Builder("int", INTEGER, ScriptCompiler.NONE, false, true, IndexVersion.CURRENT, null).build(context) + .fieldType(), + new NumberFieldMapper.Builder("long", LONG, ScriptCompiler.NONE, false, true, IndexVersion.CURRENT, null).build(context) + .fieldType() )) { ifdService.clear(); fd = ifdService.getForField(mapper, FieldDataContext.noRuntimeFields("test")); @@ -101,7 +104,7 @@ public void testGetForFieldDefaults() { ScriptCompiler.NONE, false, true, - Version.CURRENT, + IndexVersion.CURRENT, null ).build(context).fieldType(); ifdService.clear(); @@ -114,7 +117,7 @@ public void testGetForFieldDefaults() { ScriptCompiler.NONE, false, true, - Version.CURRENT, + IndexVersion.CURRENT, null ).build(context).fieldType(); ifdService.clear(); diff --git a/server/src/test/java/org/elasticsearch/index/mapper/BooleanScriptFieldTypeTests.java b/server/src/test/java/org/elasticsearch/index/mapper/BooleanScriptFieldTypeTests.java index 4dab3ca1c8023..d86e5f3ffba0b 100644 --- a/server/src/test/java/org/elasticsearch/index/mapper/BooleanScriptFieldTypeTests.java +++ b/server/src/test/java/org/elasticsearch/index/mapper/BooleanScriptFieldTypeTests.java @@ -26,9 +26,9 @@ import org.apache.lucene.store.Directory; import org.apache.lucene.tests.index.RandomIndexWriter; import org.apache.lucene.util.BytesRef; -import org.elasticsearch.Version; import org.elasticsearch.common.bytes.BytesArray; import org.elasticsearch.common.lucene.search.function.ScriptScoreQuery; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.fielddata.BooleanScriptFieldData; import org.elasticsearch.index.fielddata.ScriptDocValues; import org.elasticsearch.index.query.SearchExecutionContext; @@ -137,7 +137,7 @@ public double execute(ExplanationHolder explanation) { } }; } - }, searchContext.lookup(), 2.5f, "test", 0, Version.CURRENT)), equalTo(1)); + }, searchContext.lookup(), 2.5f, "test", 0, IndexVersion.CURRENT)), equalTo(1)); assertThat(searcher.count(new ScriptScoreQuery(new MatchAllDocsQuery(), new Script("test"), new ScoreScript.LeafFactory() { @Override public boolean needs_score() { @@ -154,7 +154,7 @@ public double execute(ExplanationHolder explanation) { } }; } - }, searchContext.lookup(), 2.5f, "test", 0, Version.CURRENT)), equalTo(1)); + }, searchContext.lookup(), 2.5f, "test", 0, IndexVersion.CURRENT)), equalTo(1)); } } } @@ -319,7 +319,7 @@ protected Query randomTermsQuery(MappedFieldType ft, SearchExecutionContext ctx) } public void testDualingQueries() throws IOException { - BooleanFieldMapper ootb = new BooleanFieldMapper.Builder("foo", ScriptCompiler.NONE, false, Version.CURRENT).build( + BooleanFieldMapper ootb = new BooleanFieldMapper.Builder("foo", ScriptCompiler.NONE, false, IndexVersion.CURRENT).build( MapperBuilderContext.root(false) ); try (Directory directory = newDirectory(); RandomIndexWriter iw = new RandomIndexWriter(random(), directory)) { diff --git a/server/src/test/java/org/elasticsearch/index/mapper/DateFieldMapperTests.java b/server/src/test/java/org/elasticsearch/index/mapper/DateFieldMapperTests.java index 02180a2733768..a633c0a5e406e 100644 --- a/server/src/test/java/org/elasticsearch/index/mapper/DateFieldMapperTests.java +++ b/server/src/test/java/org/elasticsearch/index/mapper/DateFieldMapperTests.java @@ -10,18 +10,18 @@ import org.apache.lucene.index.DocValuesType; import org.apache.lucene.index.IndexableField; -import org.elasticsearch.Version; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.time.DateFormatter; import org.elasticsearch.common.time.DateUtils; import org.elasticsearch.core.CheckedConsumer; import org.elasticsearch.core.Strings; import org.elasticsearch.core.Tuple; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.mapper.DateFieldMapper.DateFieldType; import org.elasticsearch.script.DateFieldScript; import org.elasticsearch.script.ScriptService; import org.elasticsearch.search.DocValueFormat; -import org.elasticsearch.test.VersionUtils; +import org.elasticsearch.test.index.IndexVersionUtils; import org.elasticsearch.xcontent.XContentBuilder; import java.io.IOException; @@ -230,7 +230,7 @@ public void testBadNullValue() throws IOException { MapperParsingException e = expectThrows( MapperParsingException.class, - () -> createDocumentMapper(Version.V_8_0_0, fieldMapping(b -> b.field("type", "date").field("null_value", "foo"))) + () -> createDocumentMapper(IndexVersion.V_8_0_0, fieldMapping(b -> b.field("type", "date").field("null_value", "foo"))) ); assertThat( @@ -241,7 +241,7 @@ public void testBadNullValue() throws IOException { ) ); - createDocumentMapper(Version.V_7_9_0, fieldMapping(b -> b.field("type", "date").field("null_value", "foo"))); + createDocumentMapper(IndexVersion.V_7_9_0, fieldMapping(b -> b.field("type", "date").field("null_value", "foo"))); assertWarnings("Error parsing [foo] as date in [null_value] on field [field]); [null_value] will be ignored"); } @@ -697,7 +697,7 @@ public void execute() { public void testLegacyField() throws Exception { // check that unknown date formats are treated leniently on old indices - MapperService service = createMapperService(Version.fromString("5.0.0"), Settings.EMPTY, () -> false, mapping(b -> { + MapperService service = createMapperService(IndexVersion.fromId(5000099), Settings.EMPTY, () -> false, mapping(b -> { b.startObject("mydate"); b.field("type", "date"); b.field("format", "unknown-format"); @@ -724,8 +724,12 @@ public void testLegacyDateFormatName() { null, mock(ScriptService.class), true, - VersionUtils.randomVersionBetween(random(), Version.V_7_0_0, VersionUtils.getPreviousVersion(Version.V_8_0_0)) // BWC compatible - // index, e.g 7.x + // BWC compatible index, e.g 7.x + IndexVersionUtils.randomVersionBetween( + random(), + IndexVersion.V_7_0_0, + IndexVersionUtils.getPreviousVersion(IndexVersion.V_8_0_0) + ) ); // Check that we allow the use of camel case date formats on 7.x indices @@ -743,7 +747,7 @@ public void testLegacyDateFormatName() { null, mock(ScriptService.class), true, - Version.CURRENT + IndexVersion.CURRENT ); @SuppressWarnings("unchecked") diff --git a/server/src/test/java/org/elasticsearch/index/mapper/DateScriptFieldTypeTests.java b/server/src/test/java/org/elasticsearch/index/mapper/DateScriptFieldTypeTests.java index 2c43fd1c2dff0..d61ef913f1ff2 100644 --- a/server/src/test/java/org/elasticsearch/index/mapper/DateScriptFieldTypeTests.java +++ b/server/src/test/java/org/elasticsearch/index/mapper/DateScriptFieldTypeTests.java @@ -29,12 +29,12 @@ import org.apache.lucene.tests.index.RandomIndexWriter; import org.apache.lucene.util.BytesRef; import org.elasticsearch.ElasticsearchParseException; -import org.elasticsearch.Version; import org.elasticsearch.common.CheckedSupplier; import org.elasticsearch.common.Strings; import org.elasticsearch.common.geo.ShapeRelation; import org.elasticsearch.common.lucene.search.function.ScriptScoreQuery; import org.elasticsearch.common.time.DateFormatter; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.fielddata.DateScriptFieldData; import org.elasticsearch.index.fielddata.ScriptDocValues; import org.elasticsearch.index.query.SearchExecutionContext; @@ -230,7 +230,7 @@ public double execute(ExplanationHolder explanation) { } }; } - }, searchContext.lookup(), 354.5f, "test", 0, Version.CURRENT)), equalTo(1)); + }, searchContext.lookup(), 354.5f, "test", 0, IndexVersion.CURRENT)), equalTo(1)); } } } @@ -443,7 +443,7 @@ public void testLegacyDateFormatName() throws IOException { b.field("format", "strictDateOptionalTime"); }); // Check that we can correctly use the camel case date format for 7.x indices - createMapperService(Version.fromId(7_99_99_99), mapping.get()); // no exception thrown + createMapperService(IndexVersion.fromId(7_99_99_99), mapping.get()); // no exception thrown // Check that we don't allow the use of camel case date formats on 8.x indices assertEquals( diff --git a/server/src/test/java/org/elasticsearch/index/mapper/DocumentMapperTests.java b/server/src/test/java/org/elasticsearch/index/mapper/DocumentMapperTests.java index 421839701b634..fd1600cfa609f 100644 --- a/server/src/test/java/org/elasticsearch/index/mapper/DocumentMapperTests.java +++ b/server/src/test/java/org/elasticsearch/index/mapper/DocumentMapperTests.java @@ -12,11 +12,11 @@ import org.apache.lucene.analysis.core.KeywordAnalyzer; import org.apache.lucene.analysis.core.WhitespaceAnalyzer; import org.apache.lucene.analysis.standard.StandardAnalyzer; -import org.elasticsearch.Version; import org.elasticsearch.common.Strings; import org.elasticsearch.common.compress.CompressedXContent; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.index.IndexSettings; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.analysis.AnalyzerScope; import org.elasticsearch.index.analysis.IndexAnalyzers; import org.elasticsearch.index.analysis.NamedAnalyzer; @@ -284,7 +284,7 @@ public void testMergeMetaForIndexTemplate() throws IOException { } public void testEmptyDocumentMapper() { - MapperService mapperService = createMapperService(Version.CURRENT, Settings.EMPTY, () -> false); + MapperService mapperService = createMapperService(IndexVersion.CURRENT, Settings.EMPTY, () -> false); DocumentMapper documentMapper = DocumentMapper.createEmpty(mapperService); assertEquals("{\"_doc\":{}}", Strings.toString(documentMapper.mapping())); assertTrue(documentMapper.mappers().hasMappings()); @@ -428,7 +428,7 @@ public void testDeeplyNestedMapping() throws Exception { builders[i].endObject().endObject().endObject(); } - final MapperService mapperService = createMapperService(Version.CURRENT, Settings.EMPTY, () -> false); + final MapperService mapperService = createMapperService(IndexVersion.CURRENT, Settings.EMPTY, () -> false); final CountDownLatch latch = new CountDownLatch(1); final Thread[] threads = new Thread[numThreads]; for (int i = 0; i < threads.length; i++) { diff --git a/server/src/test/java/org/elasticsearch/index/mapper/DoubleScriptFieldTypeTests.java b/server/src/test/java/org/elasticsearch/index/mapper/DoubleScriptFieldTypeTests.java index a15f5df111860..f920de76c85f8 100644 --- a/server/src/test/java/org/elasticsearch/index/mapper/DoubleScriptFieldTypeTests.java +++ b/server/src/test/java/org/elasticsearch/index/mapper/DoubleScriptFieldTypeTests.java @@ -24,8 +24,8 @@ import org.apache.lucene.store.Directory; import org.apache.lucene.tests.index.RandomIndexWriter; import org.apache.lucene.util.BytesRef; -import org.elasticsearch.Version; import org.elasticsearch.common.lucene.search.function.ScriptScoreQuery; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.fielddata.DoubleScriptFieldData; import org.elasticsearch.index.fielddata.ScriptDocValues; import org.elasticsearch.index.fielddata.SortedNumericDoubleValues; @@ -138,7 +138,7 @@ public double execute(ExplanationHolder explanation) { } }; } - }, searchContext.lookup(), 2.5f, "test", 0, Version.CURRENT)), equalTo(1)); + }, searchContext.lookup(), 2.5f, "test", 0, IndexVersion.CURRENT)), equalTo(1)); } } } diff --git a/server/src/test/java/org/elasticsearch/index/mapper/DynamicTemplatesTests.java b/server/src/test/java/org/elasticsearch/index/mapper/DynamicTemplatesTests.java index e70b7143b0f4f..3ee34cb1fae06 100644 --- a/server/src/test/java/org/elasticsearch/index/mapper/DynamicTemplatesTests.java +++ b/server/src/test/java/org/elasticsearch/index/mapper/DynamicTemplatesTests.java @@ -20,8 +20,10 @@ import org.elasticsearch.common.compress.CompressedXContent; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.xcontent.XContentHelper; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.test.VersionUtils; import org.elasticsearch.test.XContentTestUtils; +import org.elasticsearch.test.index.IndexVersionUtils; import org.elasticsearch.xcontent.XContentBuilder; import org.elasticsearch.xcontent.XContentFactory; import org.elasticsearch.xcontent.XContentParser; @@ -36,7 +38,6 @@ import java.util.Map; import static org.elasticsearch.test.StreamsUtils.copyToStringFromClasspath; -import static org.elasticsearch.test.VersionUtils.randomVersionBetween; import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.empty; import static org.hamcrest.Matchers.equalTo; @@ -193,7 +194,7 @@ public void testSimpleWithXContentTraverse() throws Exception { public void testDynamicMapperWithBadMapping() throws IOException { { // in 7.x versions this will issue a deprecation warning - Version version = VersionUtils.randomCompatibleVersion(random(), Version.V_7_0_0); + IndexVersion version = VersionUtils.randomCompatibleVersion(random(), Version.V_7_0_0).indexVersion; DocumentMapper mapper = createDocumentMapper(version, topMapping(b -> { b.startArray("dynamic_templates"); { @@ -330,7 +331,7 @@ public void testDynamicTemplatesForIndexTemplate() throws IOException { .endArray() .endObject() ); - MapperService mapperService = createMapperService(Version.CURRENT, Settings.EMPTY, () -> true); + MapperService mapperService = createMapperService(IndexVersion.CURRENT, Settings.EMPTY, () -> true); mapperService.merge(MapperService.SINGLE_MAPPING_NAME, new CompressedXContent(mapping), MapperService.MergeReason.INDEX_TEMPLATE); // There should be no update if templates are not set. @@ -664,7 +665,7 @@ public void testIllegalDynamicTemplate7DotXIndex() throws Exception { mapping.endObject(); } mapping.endObject(); - Version createdVersion = randomVersionBetween(random(), Version.V_7_0_0, Version.V_7_7_0); + IndexVersion createdVersion = IndexVersionUtils.randomVersionBetween(random(), IndexVersion.V_7_0_0, IndexVersion.V_7_7_0); MapperService mapperService = createMapperService(createdVersion, mapping); assertThat(mapperService.documentMapper().mappingSource().toString(), containsString("\"type\":\"string\"")); assertWarnings(""" diff --git a/server/src/test/java/org/elasticsearch/index/mapper/FieldAliasMapperValidationTests.java b/server/src/test/java/org/elasticsearch/index/mapper/FieldAliasMapperValidationTests.java index 85ab4d7739904..929b82592f5a4 100644 --- a/server/src/test/java/org/elasticsearch/index/mapper/FieldAliasMapperValidationTests.java +++ b/server/src/test/java/org/elasticsearch/index/mapper/FieldAliasMapperValidationTests.java @@ -7,8 +7,8 @@ */ package org.elasticsearch.index.mapper; -import org.elasticsearch.Version; import org.elasticsearch.common.Explicit; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.script.ScriptCompiler; import org.elasticsearch.test.ESTestCase; @@ -158,7 +158,7 @@ public void testFieldAliasWithDifferentNestedScopes() { } private static FieldMapper createFieldMapper(String parent, String name) { - return new BooleanFieldMapper.Builder(name, ScriptCompiler.NONE, false, Version.CURRENT).build( + return new BooleanFieldMapper.Builder(name, ScriptCompiler.NONE, false, IndexVersion.CURRENT).build( new MapperBuilderContext(parent, false) ); } @@ -168,7 +168,7 @@ private static ObjectMapper createObjectMapper(String name) { } private static NestedObjectMapper createNestedObjectMapper(String name) { - return new NestedObjectMapper.Builder(name, Version.CURRENT).build(MapperBuilderContext.root(false)); + return new NestedObjectMapper.Builder(name, IndexVersion.CURRENT).build(MapperBuilderContext.root(false)); } private static MappingLookup createMappingLookup( diff --git a/server/src/test/java/org/elasticsearch/index/mapper/FieldNamesFieldMapperTests.java b/server/src/test/java/org/elasticsearch/index/mapper/FieldNamesFieldMapperTests.java index 998f5776d62ce..d945a17bfdd99 100644 --- a/server/src/test/java/org/elasticsearch/index/mapper/FieldNamesFieldMapperTests.java +++ b/server/src/test/java/org/elasticsearch/index/mapper/FieldNamesFieldMapperTests.java @@ -86,7 +86,7 @@ public void testUsingEnabledSettingThrows() { public void testUsingEnabledBefore8() throws Exception { DocumentMapper docMapper = createDocumentMapper( - VersionUtils.randomPreviousCompatibleVersion(random(), Version.V_8_0_0), + VersionUtils.randomPreviousCompatibleVersion(random(), Version.V_8_0_0).indexVersion, topMapping(b -> b.startObject("_field_names").field("enabled", false).endObject()) ); @@ -103,7 +103,7 @@ public void testUsingEnabledBefore8() throws Exception { */ public void testMergingMappingsBefore8() throws Exception { MapperService mapperService = createMapperService( - VersionUtils.randomPreviousCompatibleVersion(random(), Version.V_8_0_0), + VersionUtils.randomPreviousCompatibleVersion(random(), Version.V_8_0_0).indexVersion, mapping(b -> {}) ); diff --git a/server/src/test/java/org/elasticsearch/index/mapper/GeoPointFieldTypeTests.java b/server/src/test/java/org/elasticsearch/index/mapper/GeoPointFieldTypeTests.java index bac0469fddf32..221ea95413aba 100644 --- a/server/src/test/java/org/elasticsearch/index/mapper/GeoPointFieldTypeTests.java +++ b/server/src/test/java/org/elasticsearch/index/mapper/GeoPointFieldTypeTests.java @@ -9,9 +9,9 @@ package org.elasticsearch.index.mapper; import org.apache.lucene.tests.geo.GeoTestUtil; -import org.elasticsearch.Version; import org.elasticsearch.common.geo.GeoPoint; import org.elasticsearch.common.geo.SimpleFeatureFactory; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.script.ScriptCompiler; import org.hamcrest.Matchers; @@ -24,7 +24,7 @@ public class GeoPointFieldTypeTests extends FieldTypeTestCase { public void testFetchSourceValue() throws IOException { boolean ignoreMalformed = randomBoolean(); - MappedFieldType mapper = new GeoPointFieldMapper.Builder("field", ScriptCompiler.NONE, ignoreMalformed, Version.CURRENT, null) + MappedFieldType mapper = new GeoPointFieldMapper.Builder("field", ScriptCompiler.NONE, ignoreMalformed, IndexVersion.CURRENT, null) .build(MapperBuilderContext.root(false)) .fieldType(); @@ -84,7 +84,7 @@ public void testFetchSourceValue() throws IOException { } public void testFetchVectorTile() throws IOException { - MappedFieldType mapper = new GeoPointFieldMapper.Builder("field", ScriptCompiler.NONE, false, Version.CURRENT, null).build( + MappedFieldType mapper = new GeoPointFieldMapper.Builder("field", ScriptCompiler.NONE, false, IndexVersion.CURRENT, null).build( MapperBuilderContext.root(false) ).fieldType(); final int z = randomIntBetween(1, 10); diff --git a/server/src/test/java/org/elasticsearch/index/mapper/GeoPointScriptFieldTypeTests.java b/server/src/test/java/org/elasticsearch/index/mapper/GeoPointScriptFieldTypeTests.java index f921e7f184949..613f5bc4c3980 100644 --- a/server/src/test/java/org/elasticsearch/index/mapper/GeoPointScriptFieldTypeTests.java +++ b/server/src/test/java/org/elasticsearch/index/mapper/GeoPointScriptFieldTypeTests.java @@ -21,10 +21,10 @@ import org.apache.lucene.store.Directory; import org.apache.lucene.tests.index.RandomIndexWriter; import org.apache.lucene.util.BytesRef; -import org.elasticsearch.Version; import org.elasticsearch.common.geo.GeoPoint; import org.elasticsearch.common.lucene.search.function.ScriptScoreQuery; import org.elasticsearch.geo.GeometryTestUtils; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.fielddata.GeoPointScriptFieldData; import org.elasticsearch.index.fielddata.MultiGeoPointValues; import org.elasticsearch.index.fielddata.ScriptDocValues; @@ -148,7 +148,7 @@ public double execute(ExplanationHolder explanation) { } }; } - }, searchContext.lookup(), 2.5f, "test", 0, Version.CURRENT)), equalTo(1)); + }, searchContext.lookup(), 2.5f, "test", 0, IndexVersion.CURRENT)), equalTo(1)); } } } diff --git a/server/src/test/java/org/elasticsearch/index/mapper/IdFieldTypeTests.java b/server/src/test/java/org/elasticsearch/index/mapper/IdFieldTypeTests.java index fb42d6633bb06..72952fd0cfe50 100644 --- a/server/src/test/java/org/elasticsearch/index/mapper/IdFieldTypeTests.java +++ b/server/src/test/java/org/elasticsearch/index/mapper/IdFieldTypeTests.java @@ -14,6 +14,7 @@ import org.elasticsearch.common.UUIDs; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.index.IndexSettings; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.query.SearchExecutionContext; import org.elasticsearch.test.ESTestCase; import org.mockito.Mockito; @@ -45,7 +46,7 @@ public void testTermsQuery() { IndexMetadata indexMetadata = IndexMetadata.builder(IndexMetadata.INDEX_UUID_NA_VALUE).settings(indexSettings).build(); IndexSettings mockSettings = new IndexSettings(indexMetadata, Settings.EMPTY); Mockito.when(context.getIndexSettings()).thenReturn(mockSettings); - Mockito.when(context.indexVersionCreated()).thenReturn(Version.CURRENT); + Mockito.when(context.indexVersionCreated()).thenReturn(IndexVersion.CURRENT); MappedFieldType ft = new ProvidedIdFieldMapper.IdFieldType(() -> false); Query query = ft.termQuery("id", context); assertEquals(new TermInSetQuery("_id", Uid.encodeId("id")), query); diff --git a/server/src/test/java/org/elasticsearch/index/mapper/IpFieldMapperTests.java b/server/src/test/java/org/elasticsearch/index/mapper/IpFieldMapperTests.java index 7570e24089255..64dce43ac9e57 100644 --- a/server/src/test/java/org/elasticsearch/index/mapper/IpFieldMapperTests.java +++ b/server/src/test/java/org/elasticsearch/index/mapper/IpFieldMapperTests.java @@ -15,10 +15,10 @@ import org.apache.lucene.search.Query; import org.apache.lucene.search.TermQuery; import org.apache.lucene.util.BytesRef; -import org.elasticsearch.Version; import org.elasticsearch.common.network.InetAddresses; import org.elasticsearch.common.network.NetworkAddress; import org.elasticsearch.core.Tuple; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.script.IpFieldScript; import org.elasticsearch.test.ESTestCase; import org.elasticsearch.xcontent.XContentBuilder; @@ -193,7 +193,7 @@ public void testNullValue() throws IOException { MapperParsingException e = expectThrows( MapperParsingException.class, - () -> createDocumentMapper(Version.CURRENT, fieldMapping(b -> { + () -> createDocumentMapper(IndexVersion.CURRENT, fieldMapping(b -> { b.field("type", "ip"); b.field("null_value", ":1"); })) @@ -203,7 +203,7 @@ public void testNullValue() throws IOException { "Failed to parse mapping: Error parsing [null_value] on field [field]: ':1' is not an IP string literal." ); - createDocumentMapper(Version.V_7_9_0, fieldMapping(b -> { + createDocumentMapper(IndexVersion.V_7_9_0, fieldMapping(b -> { b.field("type", "ip"); b.field("null_value", ":1"); })); diff --git a/server/src/test/java/org/elasticsearch/index/mapper/IpFieldTypeTests.java b/server/src/test/java/org/elasticsearch/index/mapper/IpFieldTypeTests.java index a4a22c9ef727c..8c19bcf2051fa 100644 --- a/server/src/test/java/org/elasticsearch/index/mapper/IpFieldTypeTests.java +++ b/server/src/test/java/org/elasticsearch/index/mapper/IpFieldTypeTests.java @@ -15,8 +15,8 @@ import org.apache.lucene.search.MatchNoDocsQuery; import org.apache.lucene.search.Query; import org.apache.lucene.util.BytesRef; -import org.elasticsearch.Version; import org.elasticsearch.common.network.InetAddresses; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.script.ScriptCompiler; import java.io.IOException; @@ -348,14 +348,14 @@ public void testRangeQuery() { } public void testFetchSourceValue() throws IOException { - MappedFieldType mapper = new IpFieldMapper.Builder("field", ScriptCompiler.NONE, true, Version.CURRENT).build( + MappedFieldType mapper = new IpFieldMapper.Builder("field", ScriptCompiler.NONE, true, IndexVersion.CURRENT).build( MapperBuilderContext.root(false) ).fieldType(); assertEquals(List.of("2001:db8::2:1"), fetchSourceValue(mapper, "2001:db8::2:1")); assertEquals(List.of("2001:db8::2:1"), fetchSourceValue(mapper, "2001:db8:0:0:0:0:2:1")); assertEquals(List.of("::1"), fetchSourceValue(mapper, "0:0:0:0:0:0:0:1")); - MappedFieldType nullValueMapper = new IpFieldMapper.Builder("field", ScriptCompiler.NONE, true, Version.CURRENT).nullValue( + MappedFieldType nullValueMapper = new IpFieldMapper.Builder("field", ScriptCompiler.NONE, true, IndexVersion.CURRENT).nullValue( "2001:db8:0:0:0:0:2:7" ).build(MapperBuilderContext.root(false)).fieldType(); assertEquals(List.of("2001:db8::2:7"), fetchSourceValue(nullValueMapper, null)); diff --git a/server/src/test/java/org/elasticsearch/index/mapper/IpScriptFieldTypeTests.java b/server/src/test/java/org/elasticsearch/index/mapper/IpScriptFieldTypeTests.java index 16d91f055af3d..d668ee70b81d3 100644 --- a/server/src/test/java/org/elasticsearch/index/mapper/IpScriptFieldTypeTests.java +++ b/server/src/test/java/org/elasticsearch/index/mapper/IpScriptFieldTypeTests.java @@ -24,8 +24,8 @@ import org.apache.lucene.store.Directory; import org.apache.lucene.tests.index.RandomIndexWriter; import org.apache.lucene.util.BytesRef; -import org.elasticsearch.Version; import org.elasticsearch.common.lucene.search.function.ScriptScoreQuery; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.fielddata.BinaryScriptFieldData; import org.elasticsearch.index.fielddata.ScriptDocValues.Strings; import org.elasticsearch.index.fielddata.SortedBinaryDocValues; @@ -150,7 +150,7 @@ public double execute(ExplanationHolder explanation) { } }; } - }, searchContext.lookup(), 2.5f, "test", 0, Version.CURRENT)), equalTo(1)); + }, searchContext.lookup(), 2.5f, "test", 0, IndexVersion.CURRENT)), equalTo(1)); } } } diff --git a/server/src/test/java/org/elasticsearch/index/mapper/KeywordFieldMapperTests.java b/server/src/test/java/org/elasticsearch/index/mapper/KeywordFieldMapperTests.java index 34a57b1d33ff7..2ad4f0e03c4a8 100644 --- a/server/src/test/java/org/elasticsearch/index/mapper/KeywordFieldMapperTests.java +++ b/server/src/test/java/org/elasticsearch/index/mapper/KeywordFieldMapperTests.java @@ -20,13 +20,13 @@ import org.apache.lucene.tests.analysis.MockLowerCaseFilter; import org.apache.lucene.tests.analysis.MockTokenizer; import org.apache.lucene.util.BytesRef; -import org.elasticsearch.Version; import org.elasticsearch.cluster.metadata.IndexMetadata; import org.elasticsearch.common.Strings; import org.elasticsearch.common.lucene.Lucene; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.core.Tuple; import org.elasticsearch.index.IndexSettings; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.analysis.AnalyzerScope; import org.elasticsearch.index.analysis.CharFilterFactory; import org.elasticsearch.index.analysis.CustomAnalyzer; @@ -602,7 +602,7 @@ protected String minimalIsInvalidRoutingPathErrorMessage(Mapper mapper) { public void testDimensionInRoutingPath() throws IOException { MapperService mapper = createMapperService(fieldMapping(b -> b.field("type", "keyword").field("time_series_dimension", true))); IndexSettings settings = createIndexSettings( - Version.CURRENT, + IndexVersion.CURRENT, Settings.builder() .put(IndexSettings.MODE.getKey(), "time_series") .put(IndexMetadata.INDEX_ROUTING_PATH.getKey(), "field") @@ -773,7 +773,7 @@ public void execute() { public void testLegacyField() throws Exception { // check that unknown normalizers are treated leniently on old indices - MapperService service = createMapperService(Version.fromString("5.0.0"), Settings.EMPTY, () -> false, mapping(b -> { + MapperService service = createMapperService(IndexVersion.fromId(5000099), Settings.EMPTY, () -> false, mapping(b -> { b.startObject("mykeyw"); b.field("type", "keyword"); b.field("normalizer", "unknown-normalizer"); diff --git a/server/src/test/java/org/elasticsearch/index/mapper/KeywordFieldTypeTests.java b/server/src/test/java/org/elasticsearch/index/mapper/KeywordFieldTypeTests.java index ac7a7a0241350..a711a6d63f1c2 100644 --- a/server/src/test/java/org/elasticsearch/index/mapper/KeywordFieldTypeTests.java +++ b/server/src/test/java/org/elasticsearch/index/mapper/KeywordFieldTypeTests.java @@ -27,10 +27,10 @@ import org.apache.lucene.search.TermRangeQuery; import org.apache.lucene.util.BytesRef; import org.elasticsearch.ElasticsearchException; -import org.elasticsearch.Version; import org.elasticsearch.common.lucene.BytesRefs; import org.elasticsearch.common.lucene.Lucene; import org.elasticsearch.common.unit.Fuzziness; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.analysis.AnalyzerScope; import org.elasticsearch.index.analysis.CharFilterFactory; import org.elasticsearch.index.analysis.CustomAnalyzer; @@ -213,7 +213,7 @@ public void testNormalizeQueries() { } public void testFetchSourceValue() throws IOException { - MappedFieldType mapper = new KeywordFieldMapper.Builder("field", Version.CURRENT).build(MapperBuilderContext.root(false)) + MappedFieldType mapper = new KeywordFieldMapper.Builder("field", IndexVersion.CURRENT).build(MapperBuilderContext.root(false)) .fieldType(); assertEquals(List.of("value"), fetchSourceValue(mapper, "value")); assertEquals(List.of("42"), fetchSourceValue(mapper, 42L)); @@ -222,7 +222,7 @@ public void testFetchSourceValue() throws IOException { IllegalArgumentException e = expectThrows(IllegalArgumentException.class, () -> fetchSourceValue(mapper, "value", "format")); assertEquals("Field [field] of type [keyword] doesn't support formats.", e.getMessage()); - MappedFieldType ignoreAboveMapper = new KeywordFieldMapper.Builder("field", Version.CURRENT).ignoreAbove(4) + MappedFieldType ignoreAboveMapper = new KeywordFieldMapper.Builder("field", IndexVersion.CURRENT).ignoreAbove(4) .build(MapperBuilderContext.root(false)) .fieldType(); assertEquals(List.of(), fetchSourceValue(ignoreAboveMapper, "value")); @@ -233,13 +233,13 @@ public void testFetchSourceValue() throws IOException { "field", createIndexAnalyzers(), ScriptCompiler.NONE, - Version.CURRENT + IndexVersion.CURRENT ).normalizer("lowercase").build(MapperBuilderContext.root(false)).fieldType(); assertEquals(List.of("value"), fetchSourceValue(normalizerMapper, "VALUE")); assertEquals(List.of("42"), fetchSourceValue(normalizerMapper, 42L)); assertEquals(List.of("value"), fetchSourceValue(normalizerMapper, "value")); - MappedFieldType nullValueMapper = new KeywordFieldMapper.Builder("field", Version.CURRENT).nullValue("NULL") + MappedFieldType nullValueMapper = new KeywordFieldMapper.Builder("field", IndexVersion.CURRENT).nullValue("NULL") .build(MapperBuilderContext.root(false)) .fieldType(); assertEquals(List.of("NULL"), fetchSourceValue(nullValueMapper, null)); diff --git a/server/src/test/java/org/elasticsearch/index/mapper/KeywordScriptFieldTypeTests.java b/server/src/test/java/org/elasticsearch/index/mapper/KeywordScriptFieldTypeTests.java index 46813a61d77f6..cd124dc8dcd7d 100644 --- a/server/src/test/java/org/elasticsearch/index/mapper/KeywordScriptFieldTypeTests.java +++ b/server/src/test/java/org/elasticsearch/index/mapper/KeywordScriptFieldTypeTests.java @@ -25,9 +25,9 @@ import org.apache.lucene.tests.index.RandomIndexWriter; import org.apache.lucene.util.BytesRef; import org.apache.lucene.util.automaton.Operations; -import org.elasticsearch.Version; import org.elasticsearch.common.lucene.search.function.ScriptScoreQuery; import org.elasticsearch.common.unit.Fuzziness; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.fielddata.BinaryScriptFieldData; import org.elasticsearch.index.fielddata.ScriptDocValues; import org.elasticsearch.index.fielddata.SortedBinaryDocValues; @@ -133,7 +133,7 @@ public double execute(ExplanationHolder explanation) { } }; } - }, searchContext.lookup(), 2.5f, "test", 0, Version.CURRENT)), equalTo(1)); + }, searchContext.lookup(), 2.5f, "test", 0, IndexVersion.CURRENT)), equalTo(1)); } } } diff --git a/server/src/test/java/org/elasticsearch/index/mapper/LongScriptFieldTypeTests.java b/server/src/test/java/org/elasticsearch/index/mapper/LongScriptFieldTypeTests.java index b0991ecf40140..1598964668085 100644 --- a/server/src/test/java/org/elasticsearch/index/mapper/LongScriptFieldTypeTests.java +++ b/server/src/test/java/org/elasticsearch/index/mapper/LongScriptFieldTypeTests.java @@ -26,9 +26,9 @@ import org.apache.lucene.store.Directory; import org.apache.lucene.tests.index.RandomIndexWriter; import org.apache.lucene.util.BytesRef; -import org.elasticsearch.Version; import org.elasticsearch.common.geo.ShapeRelation; import org.elasticsearch.common.lucene.search.function.ScriptScoreQuery; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.fielddata.LongScriptFieldData; import org.elasticsearch.index.fielddata.ScriptDocValues; import org.elasticsearch.index.query.SearchExecutionContext; @@ -174,7 +174,7 @@ public double execute(ExplanationHolder explanation) { } }; } - }, searchContext.lookup(), 2.5f, "test", 0, Version.CURRENT)), equalTo(1)); + }, searchContext.lookup(), 2.5f, "test", 0, IndexVersion.CURRENT)), equalTo(1)); } } } diff --git a/server/src/test/java/org/elasticsearch/index/mapper/MappingParserTests.java b/server/src/test/java/org/elasticsearch/index/mapper/MappingParserTests.java index ecf4e0af17d16..5010123d156e5 100644 --- a/server/src/test/java/org/elasticsearch/index/mapper/MappingParserTests.java +++ b/server/src/test/java/org/elasticsearch/index/mapper/MappingParserTests.java @@ -9,17 +9,17 @@ package org.elasticsearch.index.mapper; import org.elasticsearch.TransportVersion; -import org.elasticsearch.Version; import org.elasticsearch.common.bytes.BytesReference; import org.elasticsearch.common.compress.CompressedXContent; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.index.IndexSettings; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.analysis.IndexAnalyzers; import org.elasticsearch.index.similarity.SimilarityService; import org.elasticsearch.indices.IndicesModule; import org.elasticsearch.script.ScriptService; import org.elasticsearch.test.TransportVersionUtils; -import org.elasticsearch.test.VersionUtils; +import org.elasticsearch.test.index.IndexVersionUtils; import org.elasticsearch.xcontent.XContentBuilder; import org.hamcrest.CoreMatchers; @@ -32,10 +32,10 @@ public class MappingParserTests extends MapperServiceTestCase { private static MappingParser createMappingParser(Settings settings) { - return createMappingParser(settings, Version.CURRENT, TransportVersion.current()); + return createMappingParser(settings, IndexVersion.CURRENT, TransportVersion.current()); } - private static MappingParser createMappingParser(Settings settings, Version version, TransportVersion transportVersion) { + private static MappingParser createMappingParser(Settings settings, IndexVersion version, TransportVersion transportVersion) { ScriptService scriptService = new ScriptService(settings, Collections.emptyMap(), Collections.emptyMap(), () -> 1L); IndexSettings indexSettings = createIndexSettings(version, settings); IndexAnalyzers indexAnalyzers = createIndexAnalyzers(); @@ -316,7 +316,7 @@ public void testBlankFieldName() throws Exception { } public void testBlankFieldNameBefore8_6_0() throws Exception { - Version version = VersionUtils.randomVersionBetween(random(), Version.CURRENT.minimumIndexCompatibilityVersion(), Version.V_8_5_0); + IndexVersion version = IndexVersionUtils.randomVersionBetween(random(), IndexVersion.MINIMUM_COMPATIBLE, IndexVersion.V_8_5_0); TransportVersion transportVersion = TransportVersionUtils.randomVersionBetween( random(), TransportVersion.MINIMUM_COMPATIBLE, diff --git a/server/src/test/java/org/elasticsearch/index/mapper/MultiFieldTests.java b/server/src/test/java/org/elasticsearch/index/mapper/MultiFieldTests.java index d8fbe18a4ac78..62a045c905fde 100644 --- a/server/src/test/java/org/elasticsearch/index/mapper/MultiFieldTests.java +++ b/server/src/test/java/org/elasticsearch/index/mapper/MultiFieldTests.java @@ -11,12 +11,12 @@ import org.apache.lucene.index.IndexOptions; import org.apache.lucene.index.IndexableField; import org.apache.lucene.util.BytesRef; -import org.elasticsearch.Version; import org.elasticsearch.common.bytes.BytesArray; import org.elasticsearch.common.bytes.BytesReference; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.xcontent.XContentHelper; import org.elasticsearch.common.xcontent.support.XContentMapValues; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.mapper.TextFieldMapper.TextFieldType; import org.elasticsearch.xcontent.XContentType; @@ -211,7 +211,7 @@ public void testMultiFieldWithDot() { } public void testUnknownLegacyFieldsUnderKnownRootField() throws Exception { - MapperService service = createMapperService(Version.fromString("5.0.0"), Settings.EMPTY, () -> false, mapping(b -> { + MapperService service = createMapperService(IndexVersion.fromId(5000099), Settings.EMPTY, () -> false, mapping(b -> { b.startObject("name"); b.field("type", "keyword"); b.startObject("fields"); @@ -223,7 +223,7 @@ public void testUnknownLegacyFieldsUnderKnownRootField() throws Exception { } public void testUnmappedLegacyFieldsUnderKnownRootField() throws Exception { - MapperService service = createMapperService(Version.fromString("5.0.0"), Settings.EMPTY, () -> false, mapping(b -> { + MapperService service = createMapperService(IndexVersion.fromId(5000099), Settings.EMPTY, () -> false, mapping(b -> { b.startObject("name"); b.field("type", "keyword"); b.startObject("fields"); @@ -235,7 +235,7 @@ public void testUnmappedLegacyFieldsUnderKnownRootField() throws Exception { } public void testFieldsUnderUnknownRootField() throws Exception { - MapperService service = createMapperService(Version.fromString("5.0.0"), Settings.EMPTY, () -> false, mapping(b -> { + MapperService service = createMapperService(IndexVersion.fromId(5000099), Settings.EMPTY, () -> false, mapping(b -> { b.startObject("name"); b.field("type", "unknown"); b.startObject("fields"); @@ -248,7 +248,7 @@ public void testFieldsUnderUnknownRootField() throws Exception { } public void testFieldsUnderUnmappedRootField() throws Exception { - MapperService service = createMapperService(Version.fromString("5.0.0"), Settings.EMPTY, () -> false, mapping(b -> { + MapperService service = createMapperService(IndexVersion.fromId(5000099), Settings.EMPTY, () -> false, mapping(b -> { b.startObject("name"); b.field("type", CompletionFieldMapper.CONTENT_TYPE); b.startObject("fields"); diff --git a/server/src/test/java/org/elasticsearch/index/mapper/MultiFieldsSerializationTests.java b/server/src/test/java/org/elasticsearch/index/mapper/MultiFieldsSerializationTests.java index f03a81bfd616a..5eb1248c2681b 100644 --- a/server/src/test/java/org/elasticsearch/index/mapper/MultiFieldsSerializationTests.java +++ b/server/src/test/java/org/elasticsearch/index/mapper/MultiFieldsSerializationTests.java @@ -8,8 +8,8 @@ package org.elasticsearch.index.mapper; -import org.elasticsearch.Version; import org.elasticsearch.common.Strings; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.script.ScriptCompiler; import org.elasticsearch.test.ESTestCase; @@ -37,10 +37,10 @@ public void testSorting() { sortedNames.sort(Comparator.naturalOrder()); for (String name : names) { - builder.add(new BooleanFieldMapper.Builder(name, ScriptCompiler.NONE, false, Version.CURRENT)); + builder.add(new BooleanFieldMapper.Builder(name, ScriptCompiler.NONE, false, IndexVersion.CURRENT)); } - Mapper.Builder root = new BooleanFieldMapper.Builder("root", ScriptCompiler.NONE, false, Version.CURRENT); + Mapper.Builder root = new BooleanFieldMapper.Builder("root", ScriptCompiler.NONE, false, IndexVersion.CURRENT); FieldMapper.MultiFields multiFields = builder.build(root, MapperBuilderContext.root(false)); String serialized = Strings.toString(multiFields); diff --git a/server/src/test/java/org/elasticsearch/index/mapper/NestedDocumentsTests.java b/server/src/test/java/org/elasticsearch/index/mapper/NestedDocumentsTests.java index 4db3983bf6d2e..da31405e66e21 100644 --- a/server/src/test/java/org/elasticsearch/index/mapper/NestedDocumentsTests.java +++ b/server/src/test/java/org/elasticsearch/index/mapper/NestedDocumentsTests.java @@ -9,7 +9,7 @@ package org.elasticsearch.index.mapper; import org.apache.lucene.search.join.QueryBitSetProducer; -import org.elasticsearch.Version; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.search.LeafNestedDocuments; import org.elasticsearch.search.NestedDocuments; import org.elasticsearch.search.SearchHit; @@ -46,7 +46,7 @@ public void testSimpleNestedHierarchy() throws IOException { })); withLuceneIndex(mapperService, iw -> iw.addDocuments(doc.docs()), reader -> { - NestedDocuments nested = new NestedDocuments(mapperService.mappingLookup(), QueryBitSetProducer::new, Version.CURRENT); + NestedDocuments nested = new NestedDocuments(mapperService.mappingLookup(), QueryBitSetProducer::new, IndexVersion.CURRENT); LeafNestedDocuments leaf = nested.getLeafNestedDocuments(reader.leaves().get(0)); assertNotNull(leaf.advance(0)); @@ -143,7 +143,7 @@ public void testMultiLevelNestedHierarchy() throws IOException { })); withLuceneIndex(mapperService, iw -> iw.addDocuments(doc.docs()), reader -> { - NestedDocuments nested = new NestedDocuments(mapperService.mappingLookup(), QueryBitSetProducer::new, Version.CURRENT); + NestedDocuments nested = new NestedDocuments(mapperService.mappingLookup(), QueryBitSetProducer::new, IndexVersion.CURRENT); LeafNestedDocuments leaf = nested.getLeafNestedDocuments(reader.leaves().get(0)); assertNotNull(leaf.advance(0)); @@ -258,7 +258,7 @@ public void testNestedObjectWithinNonNestedObject() throws IOException { })); withLuceneIndex(mapperService, iw -> iw.addDocuments(doc.docs()), reader -> { - NestedDocuments nested = new NestedDocuments(mapperService.mappingLookup(), QueryBitSetProducer::new, Version.CURRENT); + NestedDocuments nested = new NestedDocuments(mapperService.mappingLookup(), QueryBitSetProducer::new, IndexVersion.CURRENT); LeafNestedDocuments leaf = nested.getLeafNestedDocuments(reader.leaves().get(0)); assertNotNull(leaf.advance(0)); diff --git a/server/src/test/java/org/elasticsearch/index/mapper/NestedLookupTests.java b/server/src/test/java/org/elasticsearch/index/mapper/NestedLookupTests.java index 6828a6b531c7b..c6fb7545a6dfc 100644 --- a/server/src/test/java/org/elasticsearch/index/mapper/NestedLookupTests.java +++ b/server/src/test/java/org/elasticsearch/index/mapper/NestedLookupTests.java @@ -8,7 +8,7 @@ package org.elasticsearch.index.mapper; -import org.elasticsearch.Version; +import org.elasticsearch.index.IndexVersion; import java.io.IOException; import java.util.List; @@ -64,7 +64,7 @@ public void testMultiLevelParents() throws IOException { } private static NestedObjectMapper buildMapper(String name) { - return new NestedObjectMapper.Builder(name, Version.CURRENT).build(MapperBuilderContext.root(false)); + return new NestedObjectMapper.Builder(name, IndexVersion.CURRENT).build(MapperBuilderContext.root(false)); } public void testAllParentFilters() { diff --git a/server/src/test/java/org/elasticsearch/index/mapper/NestedObjectMapperTests.java b/server/src/test/java/org/elasticsearch/index/mapper/NestedObjectMapperTests.java index 4ebbd576f438b..d4edeb97f8422 100644 --- a/server/src/test/java/org/elasticsearch/index/mapper/NestedObjectMapperTests.java +++ b/server/src/test/java/org/elasticsearch/index/mapper/NestedObjectMapperTests.java @@ -9,14 +9,14 @@ package org.elasticsearch.index.mapper; import org.apache.lucene.index.IndexableField; -import org.elasticsearch.Version; import org.elasticsearch.common.Strings; import org.elasticsearch.common.bytes.BytesReference; import org.elasticsearch.common.compress.CompressedXContent; import org.elasticsearch.common.settings.Settings; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.mapper.MapperService.MergeReason; import org.elasticsearch.index.mapper.ObjectMapper.Dynamic; -import org.elasticsearch.test.VersionUtils; +import org.elasticsearch.test.index.IndexVersionUtils; import org.elasticsearch.xcontent.XContentBuilder; import org.elasticsearch.xcontent.XContentFactory; import org.elasticsearch.xcontent.XContentType; @@ -970,7 +970,7 @@ public void testLimitNestedDocsMultipleNestedFields() throws Exception { public void testReorderParent() throws IOException { - Version version = VersionUtils.randomIndexCompatibleVersion(random()); + IndexVersion version = IndexVersionUtils.randomCompatibleVersion(random()); DocumentMapper docMapper = createDocumentMapper( version, @@ -1006,7 +1006,7 @@ public void testReorderParent() throws IOException { assertThat(doc.docs().size(), equalTo(3)); NestedObjectMapper nested1Mapper = (NestedObjectMapper) mapper; - if (version.before(Version.V_8_0_0)) { + if (version.before(IndexVersion.V_8_0_0)) { assertThat(doc.docs().get(0).get("_type"), equalTo(nested1Mapper.nestedTypePath())); } else { assertThat(doc.docs().get(0).get(NestedPathFieldMapper.NAME), equalTo(nested1Mapper.nestedTypePath())); @@ -1498,10 +1498,10 @@ public void testIndexTemplatesMergeIncludes() throws IOException { } public void testMergeNested() { - NestedObjectMapper firstMapper = new NestedObjectMapper.Builder("nested1", Version.CURRENT).includeInParent(true) + NestedObjectMapper firstMapper = new NestedObjectMapper.Builder("nested1", IndexVersion.CURRENT).includeInParent(true) .includeInRoot(true) .build(MapperBuilderContext.root(false)); - NestedObjectMapper secondMapper = new NestedObjectMapper.Builder("nested1", Version.CURRENT).includeInParent(false) + NestedObjectMapper secondMapper = new NestedObjectMapper.Builder("nested1", IndexVersion.CURRENT).includeInParent(false) .includeInRoot(true) .build(MapperBuilderContext.root(false)); diff --git a/server/src/test/java/org/elasticsearch/index/mapper/NestedPathFieldMapperTests.java b/server/src/test/java/org/elasticsearch/index/mapper/NestedPathFieldMapperTests.java index b8afec55ca64e..4338fed4aed08 100644 --- a/server/src/test/java/org/elasticsearch/index/mapper/NestedPathFieldMapperTests.java +++ b/server/src/test/java/org/elasticsearch/index/mapper/NestedPathFieldMapperTests.java @@ -8,8 +8,8 @@ package org.elasticsearch.index.mapper; -import org.elasticsearch.Version; import org.elasticsearch.common.bytes.BytesArray; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.xcontent.XContentType; import java.io.IOException; @@ -24,8 +24,8 @@ protected String fieldName() { } @Override - protected boolean isSupportedOn(Version version) { - return version.onOrAfter(Version.V_8_0_0); + protected boolean isSupportedOn(IndexVersion version) { + return version.onOrAfter(IndexVersion.V_8_0_0); } @Override diff --git a/server/src/test/java/org/elasticsearch/index/mapper/NumberFieldTypeTests.java b/server/src/test/java/org/elasticsearch/index/mapper/NumberFieldTypeTests.java index c90fb3092b1ed..a0e51bc9a1f49 100644 --- a/server/src/test/java/org/elasticsearch/index/mapper/NumberFieldTypeTests.java +++ b/server/src/test/java/org/elasticsearch/index/mapper/NumberFieldTypeTests.java @@ -37,6 +37,7 @@ import org.elasticsearch.common.settings.Settings; import org.elasticsearch.core.IOUtils; import org.elasticsearch.index.IndexSettings; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.fielddata.FieldDataContext; import org.elasticsearch.index.fielddata.IndexNumericFieldData; import org.elasticsearch.index.mapper.MappedFieldType.Relation; @@ -831,7 +832,7 @@ public void testFetchSourceValue() throws IOException { ScriptCompiler.NONE, false, true, - Version.CURRENT, + IndexVersion.CURRENT, null ).build(MapperBuilderContext.root(false)).fieldType(); assertEquals(List.of(3), fetchSourceValue(mapper, 3.14)); @@ -844,7 +845,7 @@ public void testFetchSourceValue() throws IOException { ScriptCompiler.NONE, false, true, - Version.CURRENT, + IndexVersion.CURRENT, null ).nullValue(2.71f).build(MapperBuilderContext.root(false)).fieldType(); assertEquals(List.of(2.71f), fetchSourceValue(nullValueMapper, "")); @@ -858,7 +859,7 @@ public void testFetchHalfFloatFromSource() throws IOException { ScriptCompiler.NONE, false, true, - Version.CURRENT, + IndexVersion.CURRENT, null ).build(MapperBuilderContext.root(false)).fieldType(); /* diff --git a/server/src/test/java/org/elasticsearch/index/mapper/ObjectMapperMergeTests.java b/server/src/test/java/org/elasticsearch/index/mapper/ObjectMapperMergeTests.java index 5749ce4650b1c..474d61f7bd273 100644 --- a/server/src/test/java/org/elasticsearch/index/mapper/ObjectMapperMergeTests.java +++ b/server/src/test/java/org/elasticsearch/index/mapper/ObjectMapperMergeTests.java @@ -7,8 +7,8 @@ */ package org.elasticsearch.index.mapper; -import org.elasticsearch.Version; import org.elasticsearch.common.Explicit; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.test.ESTestCase; import java.util.Collections; @@ -180,7 +180,7 @@ public void testMergedFieldNamesMultiFieldsWithinSubobjectsFalse() { } private static RootObjectMapper createRootSubobjectFalseLeafWithDots() { - FieldMapper.Builder fieldBuilder = new KeywordFieldMapper.Builder("host.name", Version.CURRENT); + FieldMapper.Builder fieldBuilder = new KeywordFieldMapper.Builder("host.name", IndexVersion.CURRENT); FieldMapper fieldMapper = fieldBuilder.build(MapperBuilderContext.root(false)); assertEquals("host.name", fieldMapper.simpleName()); assertEquals("host.name", fieldMapper.name()); @@ -188,7 +188,7 @@ private static RootObjectMapper createRootSubobjectFalseLeafWithDots() { } private static ObjectMapper.Builder createObjectSubobjectsFalseLeafWithDots() { - KeywordFieldMapper.Builder fieldBuilder = new KeywordFieldMapper.Builder("host.name", Version.CURRENT); + KeywordFieldMapper.Builder fieldBuilder = new KeywordFieldMapper.Builder("host.name", IndexVersion.CURRENT); KeywordFieldMapper fieldMapper = fieldBuilder.build(new MapperBuilderContext("foo.metrics", false)); assertEquals("host.name", fieldMapper.simpleName()); assertEquals("foo.metrics.host.name", fieldMapper.name()); @@ -212,7 +212,7 @@ private ObjectMapper.Builder createObjectSubobjectsFalseLeafWithMultiField() { private TextFieldMapper.Builder createTextKeywordMultiField(String name) { TextFieldMapper.Builder builder = new TextFieldMapper.Builder(name, createDefaultIndexAnalyzers()); - builder.multiFieldsBuilder.add(new KeywordFieldMapper.Builder("keyword", Version.CURRENT)); + builder.multiFieldsBuilder.add(new KeywordFieldMapper.Builder("keyword", IndexVersion.CURRENT)); return builder; } } diff --git a/server/src/test/java/org/elasticsearch/index/mapper/ObjectMapperTests.java b/server/src/test/java/org/elasticsearch/index/mapper/ObjectMapperTests.java index 0f1a5e54f16b4..d84805d570b6d 100644 --- a/server/src/test/java/org/elasticsearch/index/mapper/ObjectMapperTests.java +++ b/server/src/test/java/org/elasticsearch/index/mapper/ObjectMapperTests.java @@ -8,12 +8,12 @@ package org.elasticsearch.index.mapper; -import org.elasticsearch.Version; import org.elasticsearch.common.Strings; import org.elasticsearch.common.bytes.BytesArray; import org.elasticsearch.common.bytes.BytesReference; import org.elasticsearch.common.compress.CompressedXContent; import org.elasticsearch.common.settings.Settings; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.mapper.MapperService.MergeReason; import org.elasticsearch.index.mapper.ObjectMapper.Dynamic; import org.elasticsearch.xcontent.XContentFactory; @@ -313,7 +313,7 @@ public void testDisallowFieldReplacementForIndexTemplates() throws IOException { } public void testUnknownLegacyFields() throws Exception { - MapperService service = createMapperService(Version.fromString("5.0.0"), Settings.EMPTY, () -> false, mapping(b -> { + MapperService service = createMapperService(IndexVersion.fromId(5000099), Settings.EMPTY, () -> false, mapping(b -> { b.startObject("name"); b.field("type", "unknown"); b.field("unknown_setting", 5); @@ -323,7 +323,7 @@ public void testUnknownLegacyFields() throws Exception { } public void testUnmappedLegacyFields() throws Exception { - MapperService service = createMapperService(Version.fromString("5.0.0"), Settings.EMPTY, () -> false, mapping(b -> { + MapperService service = createMapperService(IndexVersion.fromId(5000099), Settings.EMPTY, () -> false, mapping(b -> { b.startObject("name"); b.field("type", CompletionFieldMapper.CONTENT_TYPE); b.field("unknown_setting", 5); diff --git a/server/src/test/java/org/elasticsearch/index/mapper/ParametrizedMapperTests.java b/server/src/test/java/org/elasticsearch/index/mapper/ParametrizedMapperTests.java index 4b46d2faccb87..471cebd458246 100644 --- a/server/src/test/java/org/elasticsearch/index/mapper/ParametrizedMapperTests.java +++ b/server/src/test/java/org/elasticsearch/index/mapper/ParametrizedMapperTests.java @@ -17,6 +17,7 @@ import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.xcontent.XContentHelper; import org.elasticsearch.index.IndexSettings; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.analysis.AnalyzerScope; import org.elasticsearch.index.analysis.IndexAnalyzers; import org.elasticsearch.index.analysis.NamedAnalyzer; @@ -239,7 +240,12 @@ protected String contentType() { } } - private static TestMapper fromMapping(String mapping, Version version, TransportVersion transportVersion, boolean fromDynamicTemplate) { + private static TestMapper fromMapping( + String mapping, + IndexVersion version, + TransportVersion transportVersion, + boolean fromDynamicTemplate + ) { MapperService mapperService = mock(MapperService.class); IndexAnalyzers indexAnalyzers = IndexAnalyzers.of( Map.of( @@ -279,12 +285,12 @@ private static TestMapper fromMapping(String mapping, Version version, Transport .build(MapperBuilderContext.root(false)); } - private static TestMapper fromMapping(String mapping, Version version, TransportVersion transportVersion) { + private static TestMapper fromMapping(String mapping, IndexVersion version, TransportVersion transportVersion) { return fromMapping(mapping, version, transportVersion, false); } private static TestMapper fromMapping(String mapping) { - return fromMapping(mapping, Version.CURRENT, TransportVersion.current()); + return fromMapping(mapping, IndexVersion.CURRENT, TransportVersion.current()); } private String toStringWithDefaults(ToXContent value) throws IOException { @@ -525,7 +531,7 @@ public void testBWCunknownParametersfromDynamicTemplates() { {"type":"test_mapper","some_unknown_parameter":true,"required":"value"}"""; TestMapper mapper = fromMapping( mapping, - VersionUtils.randomPreviousCompatibleVersion(random(), Version.V_8_0_0), + VersionUtils.randomPreviousCompatibleVersion(random(), Version.V_8_0_0).indexVersion, TransportVersionUtils.randomVersionBetween( random(), TransportVersion.V_7_0_0, @@ -543,7 +549,7 @@ public void testBWCunknownParametersfromDynamicTemplates() { MapperParsingException ex = expectThrows( MapperParsingException.class, - () -> fromMapping(mapping, Version.V_8_0_0, TransportVersion.V_8_0_0, true) + () -> fromMapping(mapping, IndexVersion.V_8_0_0, TransportVersion.V_8_0_0, true) ); assertEquals("unknown parameter [some_unknown_parameter] on mapper [field] of type [test_mapper]", ex.getMessage()); } @@ -580,7 +586,7 @@ public void testDeprecatedParameters() { // 'index' is declared explicitly, 'store' is not, but is one of the previously always-accepted params String mapping = """ {"type":"test_mapper","index":false,"store":true,"required":"value"}"""; - TestMapper mapper = fromMapping(mapping, Version.V_7_8_0, TransportVersion.V_7_8_0); + TestMapper mapper = fromMapping(mapping, IndexVersion.V_7_8_0, TransportVersion.V_7_8_0); assertWarnings("Parameter [store] has no effect on type [test_mapper] and will be removed in future"); assertFalse(mapper.index); assertEquals(""" @@ -588,7 +594,7 @@ public void testDeprecatedParameters() { MapperParsingException e = expectThrows( MapperParsingException.class, - () -> fromMapping(mapping, Version.V_8_0_0, TransportVersion.V_8_0_0) + () -> fromMapping(mapping, IndexVersion.V_8_0_0, TransportVersion.V_8_0_0) ); assertEquals("unknown parameter [store] on mapper [field] of type [test_mapper]", e.getMessage()); } diff --git a/server/src/test/java/org/elasticsearch/index/mapper/PlaceHolderFieldMapperTests.java b/server/src/test/java/org/elasticsearch/index/mapper/PlaceHolderFieldMapperTests.java index 26b8ed8e0cb3c..86a4d5777b2e4 100644 --- a/server/src/test/java/org/elasticsearch/index/mapper/PlaceHolderFieldMapperTests.java +++ b/server/src/test/java/org/elasticsearch/index/mapper/PlaceHolderFieldMapperTests.java @@ -10,10 +10,10 @@ import org.apache.lucene.index.LeafReaderContext; import org.apache.lucene.search.IndexSearcher; -import org.elasticsearch.Version; import org.elasticsearch.common.Strings; import org.elasticsearch.common.document.DocumentField; import org.elasticsearch.common.settings.Settings; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.query.SearchExecutionContext; import org.elasticsearch.search.fetch.subphase.FieldAndFormat; import org.elasticsearch.search.fetch.subphase.FieldFetcher; @@ -38,7 +38,7 @@ public void testPreserveParams() throws Exception { b.field("someparam", "value"); b.endObject(); }); - MapperService service = createMapperService(Version.fromString("5.0.0"), Settings.EMPTY, () -> false, mapping); + MapperService service = createMapperService(IndexVersion.fromId(5000099), Settings.EMPTY, () -> false, mapping); assertThat(service.fieldType("myfield"), instanceOf(PlaceHolderFieldMapper.PlaceHolderFieldType.class)); assertEquals(Strings.toString(mapping), Strings.toString(service.documentMapper().mapping())); @@ -55,7 +55,7 @@ public void testPreserveParams() throws Exception { } public void testFetchValue() throws Exception { - MapperService mapperService = createMapperService(Version.fromString("5.0.0"), fieldMapping(b -> b.field("type", "unknown"))); + MapperService mapperService = createMapperService(IndexVersion.fromId(5000099), fieldMapping(b -> b.field("type", "unknown"))); withLuceneIndex(mapperService, iw -> { iw.addDocument( createMapperService(fieldMapping(b -> b.field("type", "keyword"))).documentMapper() diff --git a/server/src/test/java/org/elasticsearch/index/mapper/TextFieldAnalyzerModeTests.java b/server/src/test/java/org/elasticsearch/index/mapper/TextFieldAnalyzerModeTests.java index 9d86edd73adac..3ae5de5ab3074 100644 --- a/server/src/test/java/org/elasticsearch/index/mapper/TextFieldAnalyzerModeTests.java +++ b/server/src/test/java/org/elasticsearch/index/mapper/TextFieldAnalyzerModeTests.java @@ -14,6 +14,7 @@ import org.elasticsearch.Version; import org.elasticsearch.cluster.metadata.IndexMetadata; import org.elasticsearch.common.settings.Settings; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.analysis.AbstractTokenFilterFactory; import org.elasticsearch.index.analysis.AnalysisMode; import org.elasticsearch.index.analysis.AnalyzerScope; @@ -66,7 +67,7 @@ public void testParseTextFieldCheckAnalyzerAnalysisMode() { Map fieldNode = new HashMap<>(); fieldNode.put("analyzer", "my_analyzer"); MappingParserContext parserContext = mock(MappingParserContext.class); - when(parserContext.indexVersionCreated()).thenReturn(Version.CURRENT); + when(parserContext.indexVersionCreated()).thenReturn(IndexVersion.CURRENT); // check AnalysisMode.ALL works Map analyzers = defaultAnalyzers(); @@ -101,7 +102,7 @@ public void testParseTextFieldCheckSearchAnalyzerAnalysisMode() { fieldNode.put("search_analyzer", "standard"); } MappingParserContext parserContext = mock(MappingParserContext.class); - when(parserContext.indexVersionCreated()).thenReturn(Version.CURRENT); + when(parserContext.indexVersionCreated()).thenReturn(IndexVersion.CURRENT); // check AnalysisMode.ALL and AnalysisMode.SEARCH_TIME works Map analyzers = defaultAnalyzers(); @@ -142,7 +143,7 @@ public void testParseTextFieldCheckAnalyzerWithSearchAnalyzerAnalysisMode() { Map fieldNode = new HashMap<>(); fieldNode.put("analyzer", "my_analyzer"); MappingParserContext parserContext = mock(MappingParserContext.class); - when(parserContext.indexVersionCreated()).thenReturn(Version.CURRENT); + when(parserContext.indexVersionCreated()).thenReturn(IndexVersion.CURRENT); // check that "analyzer" set to AnalysisMode.INDEX_TIME is blocked if there is no search analyzer AnalysisMode mode = AnalysisMode.INDEX_TIME; diff --git a/server/src/test/java/org/elasticsearch/index/mapper/TextFieldMapperTests.java b/server/src/test/java/org/elasticsearch/index/mapper/TextFieldMapperTests.java index 9c2cf06ba7497..2eaf504fec29c 100644 --- a/server/src/test/java/org/elasticsearch/index/mapper/TextFieldMapperTests.java +++ b/server/src/test/java/org/elasticsearch/index/mapper/TextFieldMapperTests.java @@ -44,10 +44,10 @@ import org.apache.lucene.tests.analysis.MockSynonymAnalyzer; import org.apache.lucene.tests.analysis.Token; import org.apache.lucene.util.BytesRef; -import org.elasticsearch.Version; import org.elasticsearch.common.Strings; import org.elasticsearch.common.lucene.search.MultiPhrasePrefixQuery; import org.elasticsearch.index.IndexSettings; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.analysis.AnalyzerScope; import org.elasticsearch.index.analysis.CharFilterFactory; import org.elasticsearch.index.analysis.CustomAnalyzer; @@ -1190,7 +1190,7 @@ public void testUnknownAnalyzerOnLegacyIndex() throws IOException { expectThrows(MapperParsingException.class, () -> createMapperService(startingMapping)); - MapperService mapperService = createMapperService(Version.fromString("5.0.0"), startingMapping); + MapperService mapperService = createMapperService(IndexVersion.fromId(5000099), startingMapping); assertThat(mapperService.documentMapper().mappers().getMapper("field"), instanceOf(TextFieldMapper.class)); merge(mapperService, startingMapping); @@ -1207,7 +1207,7 @@ public void testIgnoreFieldDataOnLegacyIndex() throws IOException { MapperService mapperService = createMapperService(mapping); assertTrue(((TextFieldMapper) mapperService.documentMapper().mappers().getMapper("field")).fieldType().fielddata()); - mapperService = createMapperService(Version.fromString("5.0.0"), mapping); + mapperService = createMapperService(IndexVersion.fromId(5000099), mapping); assertFalse(((TextFieldMapper) mapperService.documentMapper().mappers().getMapper("field")).fieldType().fielddata()); MapperService finalMapperService = mapperService; @@ -1223,7 +1223,7 @@ public void testIgnoreEagerGlobalOrdinalsOnLegacyIndex() throws IOException { MapperService mapperService = createMapperService(mapping); assertTrue(((TextFieldMapper) mapperService.documentMapper().mappers().getMapper("field")).fieldType().eagerGlobalOrdinals()); - mapperService = createMapperService(Version.fromString("5.0.0"), mapping); + mapperService = createMapperService(IndexVersion.fromId(5000099), mapping); assertFalse(((TextFieldMapper) mapperService.documentMapper().mappers().getMapper("field")).fieldType().eagerGlobalOrdinals()); } diff --git a/server/src/test/java/org/elasticsearch/index/mapper/TsidExtractingIdFieldMapperTests.java b/server/src/test/java/org/elasticsearch/index/mapper/TsidExtractingIdFieldMapperTests.java index a077de330497c..97dbbb1d65c54 100644 --- a/server/src/test/java/org/elasticsearch/index/mapper/TsidExtractingIdFieldMapperTests.java +++ b/server/src/test/java/org/elasticsearch/index/mapper/TsidExtractingIdFieldMapperTests.java @@ -10,7 +10,6 @@ import com.carrotsearch.randomizedtesting.annotations.ParametersFactory; import org.apache.lucene.index.IndexableField; -import org.elasticsearch.Version; import org.elasticsearch.cluster.metadata.IndexMetadata; import org.elasticsearch.cluster.routing.IndexRouting; import org.elasticsearch.common.bytes.BytesReference; @@ -19,7 +18,8 @@ import org.elasticsearch.core.CheckedConsumer; import org.elasticsearch.core.Nullable; import org.elasticsearch.index.IndexSettings; -import org.elasticsearch.test.VersionUtils; +import org.elasticsearch.index.IndexVersion; +import org.elasticsearch.test.index.IndexVersionUtils; import org.elasticsearch.xcontent.XContentBuilder; import org.elasticsearch.xcontent.XContentType; @@ -520,7 +520,7 @@ private ParsedDocument parse(@Nullable String id, MapperService mapperService, C } public void testRoutingPathCompliant() throws IOException { - Version version = VersionUtils.randomIndexCompatibleVersion(random()); + IndexVersion version = IndexVersionUtils.randomCompatibleVersion(random()); IndexRouting indexRouting = createIndexSettings(version, indexSettings(version)).getIndexRouting(); int indexShard = indexShard(indexRouting); assertThat(indexRouting.getShard(testCase.expectedId, null), equalTo(indexShard)); @@ -536,10 +536,10 @@ private int indexShard(IndexRouting indexRouting) throws IOException { } } - private Settings indexSettings(Version version) { + private Settings indexSettings(IndexVersion version) { return Settings.builder() .put(IndexSettings.MODE.getKey(), "time_series") - .put(IndexMetadata.SETTING_VERSION_CREATED, version) + .put(IndexMetadata.SETTING_VERSION_CREATED, version.id()) .put(IndexMetadata.SETTING_NUMBER_OF_SHARDS, between(1, 100)) .put(IndexSettings.TIME_SERIES_START_TIME.getKey(), "-9999-01-01T00:00:00Z") .put(IndexSettings.TIME_SERIES_END_TIME.getKey(), "9999-01-01T00:00:00Z") @@ -549,7 +549,7 @@ private Settings indexSettings(Version version) { } private MapperService mapperService() throws IOException { - Version version = VersionUtils.randomIndexCompatibleVersion(random()); + IndexVersion version = IndexVersionUtils.randomCompatibleVersion(random()); return createMapperService(indexSettings(version), mapping(b -> { b.startObject("r1").field("type", "keyword").field("time_series_dimension", true).endObject(); b.startObject("r2").field("type", "keyword").field("time_series_dimension", true).endObject(); diff --git a/server/src/test/java/org/elasticsearch/index/mapper/TypeParsersTests.java b/server/src/test/java/org/elasticsearch/index/mapper/TypeParsersTests.java index ff11c0ca12f5d..6be5861b49b96 100644 --- a/server/src/test/java/org/elasticsearch/index/mapper/TypeParsersTests.java +++ b/server/src/test/java/org/elasticsearch/index/mapper/TypeParsersTests.java @@ -15,6 +15,7 @@ import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.xcontent.XContentHelper; import org.elasticsearch.index.IndexSettings; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.analysis.AnalyzerScope; import org.elasticsearch.index.analysis.IndexAnalyzers; import org.elasticsearch.index.analysis.NamedAnalyzer; @@ -22,6 +23,7 @@ import org.elasticsearch.test.ESTestCase; import org.elasticsearch.test.TransportVersionUtils; import org.elasticsearch.test.VersionUtils; +import org.elasticsearch.test.index.IndexVersionUtils; import org.elasticsearch.xcontent.XContentBuilder; import org.elasticsearch.xcontent.XContentFactory; import org.hamcrest.Matchers; @@ -84,7 +86,7 @@ public void testMultiFieldWithinMultiField() throws IOException { IndexSettings indexSettings = new IndexSettings(metadata, Settings.EMPTY); when(mapperService.getIndexSettings()).thenReturn(indexSettings); - Version olderVersion = VersionUtils.randomPreviousCompatibleVersion(random(), Version.V_8_0_0); + IndexVersion olderVersion = VersionUtils.randomPreviousCompatibleVersion(random(), Version.V_8_0_0).indexVersion; MappingParserContext olderContext = new MappingParserContext( null, type -> typeParser, @@ -110,7 +112,7 @@ public void testMultiFieldWithinMultiField() throws IOException { // For indices created in 8.0 or later, we should throw an error. Map fieldNodeCopy = XContentHelper.convertToMap(BytesReference.bytes(mapping), true, mapping.contentType()).v2(); - Version version = VersionUtils.randomVersionBetween(random(), Version.V_8_0_0, Version.CURRENT); + IndexVersion version = IndexVersionUtils.randomVersionBetween(random(), IndexVersion.V_8_0_0, IndexVersion.CURRENT); TransportVersion transportVersion = TransportVersionUtils.randomVersionBetween( random(), TransportVersion.V_8_0_0, diff --git a/server/src/test/java/org/elasticsearch/index/mapper/flattened/FlattenedFieldMapperTests.java b/server/src/test/java/org/elasticsearch/index/mapper/flattened/FlattenedFieldMapperTests.java index 918875e3cb31d..2fde0e6865851 100644 --- a/server/src/test/java/org/elasticsearch/index/mapper/flattened/FlattenedFieldMapperTests.java +++ b/server/src/test/java/org/elasticsearch/index/mapper/flattened/FlattenedFieldMapperTests.java @@ -11,12 +11,12 @@ import org.apache.lucene.index.DocValuesType; import org.apache.lucene.index.IndexableField; import org.apache.lucene.util.BytesRef; -import org.elasticsearch.Version; import org.elasticsearch.cluster.metadata.IndexMetadata; import org.elasticsearch.common.bytes.BytesArray; import org.elasticsearch.common.bytes.BytesReference; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.index.IndexSettings; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.mapper.DocumentMapper; import org.elasticsearch.index.mapper.DocumentParsingException; import org.elasticsearch.index.mapper.FieldMapper; @@ -418,7 +418,7 @@ public void testAllDimensionsInRoutingPath() throws IOException { fieldMapping(b -> b.field("type", "flattened").field("time_series_dimensions", List.of("key1", "subfield.key2"))) ); IndexSettings settings = createIndexSettings( - Version.CURRENT, + IndexVersion.CURRENT, Settings.builder() .put(IndexSettings.MODE.getKey(), "time_series") .putList(IndexMetadata.INDEX_ROUTING_PATH.getKey(), List.of("field.key1", "field.subfield.key2")) @@ -436,7 +436,7 @@ public void testSomeDimensionsInRoutingPath() throws IOException { ) ); IndexSettings settings = createIndexSettings( - Version.CURRENT, + IndexVersion.CURRENT, Settings.builder() .put(IndexSettings.MODE.getKey(), "time_series") .putList(IndexMetadata.INDEX_ROUTING_PATH.getKey(), List.of("field.key1", "field.subfield.key2")) @@ -452,7 +452,7 @@ public void testMissingDimensionInRoutingPath() throws IOException { fieldMapping(b -> b.field("type", "flattened").field("time_series_dimensions", List.of("key1", "subfield.key2"))) ); IndexSettings settings = createIndexSettings( - Version.CURRENT, + IndexVersion.CURRENT, Settings.builder() .put(IndexSettings.MODE.getKey(), "time_series") .putList(IndexMetadata.INDEX_ROUTING_PATH.getKey(), List.of("field.key1", "field.subfield.key2", "field.key3")) @@ -483,7 +483,7 @@ public void testRoutingPathWithKeywordsAndFlattenedFields() throws IOException { b.endObject(); })); IndexSettings settings = createIndexSettings( - Version.CURRENT, + IndexVersion.CURRENT, Settings.builder() .put(IndexSettings.MODE.getKey(), "time_series") .putList(IndexMetadata.INDEX_ROUTING_PATH.getKey(), List.of("flattened_field.key1", "keyword_field")) diff --git a/server/src/test/java/org/elasticsearch/index/mapper/vectors/BinaryDenseVectorScriptDocValuesTests.java b/server/src/test/java/org/elasticsearch/index/mapper/vectors/BinaryDenseVectorScriptDocValuesTests.java index 2cbe8ede8cd75..42f28b081131b 100644 --- a/server/src/test/java/org/elasticsearch/index/mapper/vectors/BinaryDenseVectorScriptDocValuesTests.java +++ b/server/src/test/java/org/elasticsearch/index/mapper/vectors/BinaryDenseVectorScriptDocValuesTests.java @@ -10,7 +10,7 @@ import org.apache.lucene.index.BinaryDocValues; import org.apache.lucene.util.BytesRef; -import org.elasticsearch.Version; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.mapper.vectors.DenseVectorFieldMapper.ElementType; import org.elasticsearch.script.field.vectors.BinaryDenseVectorDocValuesField; import org.elasticsearch.script.field.vectors.ByteBinaryDenseVectorDocValuesField; @@ -20,7 +20,7 @@ import java.io.IOException; import java.nio.ByteBuffer; -import java.util.Arrays; +import java.util.List; import static org.hamcrest.Matchers.containsString; @@ -31,7 +31,7 @@ public void testFloatGetVectorValueAndGetMagnitude() throws IOException { float[][] vectors = { { 1, 1, 1 }, { 1, 1, 2 }, { 1, 1, 3 } }; float[] expectedMagnitudes = { 1.7320f, 2.4495f, 3.3166f }; - for (Version indexVersion : Arrays.asList(Version.V_7_4_0, Version.CURRENT)) { + for (IndexVersion indexVersion : List.of(IndexVersion.V_7_4_0, IndexVersion.CURRENT)) { BinaryDocValues docValues = wrap(vectors, ElementType.FLOAT, indexVersion); DenseVectorDocValuesField field = new BinaryDenseVectorDocValuesField(docValues, "test", ElementType.FLOAT, dims, indexVersion); DenseVectorScriptDocValues scriptDocValues = field.toScriptDocValues(); @@ -50,7 +50,7 @@ public void testByteGetVectorValueAndGetMagnitude() throws IOException { float[][] vectors = { { 1, 1, 1 }, { 1, 1, 2 }, { 1, 1, 3 } }; float[] expectedMagnitudes = { 1.7320f, 2.4495f, 3.3166f }; - BinaryDocValues docValues = wrap(vectors, ElementType.BYTE, Version.CURRENT); + BinaryDocValues docValues = wrap(vectors, ElementType.BYTE, IndexVersion.CURRENT); DenseVectorDocValuesField field = new ByteBinaryDenseVectorDocValuesField(docValues, "test", ElementType.BYTE, dims); DenseVectorScriptDocValues scriptDocValues = field.toScriptDocValues(); for (int i = 0; i < vectors.length; i++) { @@ -64,7 +64,7 @@ public void testByteGetVectorValueAndGetMagnitude() throws IOException { public void testFloatMetadataAndIterator() throws IOException { int dims = 3; - Version indexVersion = Version.CURRENT; + IndexVersion indexVersion = IndexVersion.CURRENT; float[][] vectors = fill(new float[randomIntBetween(1, 5)][dims], ElementType.FLOAT); BinaryDocValues docValues = wrap(vectors, ElementType.FLOAT, indexVersion); DenseVectorDocValuesField field = new BinaryDenseVectorDocValuesField(docValues, "test", ElementType.FLOAT, dims, indexVersion); @@ -84,7 +84,7 @@ public void testFloatMetadataAndIterator() throws IOException { public void testByteMetadataAndIterator() throws IOException { int dims = 3; - Version indexVersion = Version.CURRENT; + IndexVersion indexVersion = IndexVersion.CURRENT; float[][] vectors = fill(new float[randomIntBetween(1, 5)][dims], ElementType.BYTE); BinaryDocValues docValues = wrap(vectors, ElementType.BYTE, indexVersion); DenseVectorDocValuesField field = new ByteBinaryDenseVectorDocValuesField(docValues, "test", ElementType.BYTE, dims); @@ -114,8 +114,14 @@ protected float[][] fill(float[][] vectors, ElementType elementType) { public void testFloatMissingValues() throws IOException { int dims = 3; float[][] vectors = { { 1, 1, 1 }, { 1, 1, 2 }, { 1, 1, 3 } }; - BinaryDocValues docValues = wrap(vectors, ElementType.FLOAT, Version.CURRENT); - DenseVectorDocValuesField field = new BinaryDenseVectorDocValuesField(docValues, "test", ElementType.FLOAT, dims, Version.CURRENT); + BinaryDocValues docValues = wrap(vectors, ElementType.FLOAT, IndexVersion.CURRENT); + DenseVectorDocValuesField field = new BinaryDenseVectorDocValuesField( + docValues, + "test", + ElementType.FLOAT, + dims, + IndexVersion.CURRENT + ); DenseVectorScriptDocValues scriptDocValues = field.toScriptDocValues(); field.setNextDocId(3); @@ -130,7 +136,7 @@ public void testFloatMissingValues() throws IOException { public void testByteMissingValues() throws IOException { int dims = 3; float[][] vectors = { { 1, 1, 1 }, { 1, 1, 2 }, { 1, 1, 3 } }; - BinaryDocValues docValues = wrap(vectors, ElementType.FLOAT, Version.CURRENT); + BinaryDocValues docValues = wrap(vectors, ElementType.FLOAT, IndexVersion.CURRENT); DenseVectorDocValuesField field = new ByteBinaryDenseVectorDocValuesField(docValues, "test", ElementType.BYTE, dims); DenseVectorScriptDocValues scriptDocValues = field.toScriptDocValues(); @@ -146,8 +152,14 @@ public void testByteMissingValues() throws IOException { public void testFloatGetFunctionIsNotAccessible() throws IOException { int dims = 3; float[][] vectors = { { 1, 1, 1 }, { 1, 1, 2 }, { 1, 1, 3 } }; - BinaryDocValues docValues = wrap(vectors, ElementType.FLOAT, Version.CURRENT); - DenseVectorDocValuesField field = new BinaryDenseVectorDocValuesField(docValues, "test", ElementType.FLOAT, dims, Version.CURRENT); + BinaryDocValues docValues = wrap(vectors, ElementType.FLOAT, IndexVersion.CURRENT); + DenseVectorDocValuesField field = new BinaryDenseVectorDocValuesField( + docValues, + "test", + ElementType.FLOAT, + dims, + IndexVersion.CURRENT + ); DenseVectorScriptDocValues scriptDocValues = field.toScriptDocValues(); field.setNextDocId(0); @@ -163,7 +175,7 @@ public void testFloatGetFunctionIsNotAccessible() throws IOException { public void testByteGetFunctionIsNotAccessible() throws IOException { int dims = 3; float[][] vectors = { { 1, 1, 1 }, { 1, 1, 2 }, { 1, 1, 3 } }; - BinaryDocValues docValues = wrap(vectors, ElementType.BYTE, Version.CURRENT); + BinaryDocValues docValues = wrap(vectors, ElementType.BYTE, IndexVersion.CURRENT); DenseVectorDocValuesField field = new ByteBinaryDenseVectorDocValuesField(docValues, "test", ElementType.BYTE, dims); DenseVectorScriptDocValues scriptDocValues = field.toScriptDocValues(); @@ -177,7 +189,7 @@ public void testByteGetFunctionIsNotAccessible() throws IOException { ); } - public static BinaryDocValues wrap(float[][] vectors, ElementType elementType, Version indexVersion) { + public static BinaryDocValues wrap(float[][] vectors, ElementType elementType, IndexVersion indexVersion) { return new BinaryDocValues() { int idx = -1; int maxIdx = vectors.length; @@ -221,7 +233,7 @@ public long cost() { }; } - public static BytesRef mockEncodeDenseVector(float[] values, ElementType elementType, Version indexVersion) { + public static BytesRef mockEncodeDenseVector(float[] values, ElementType elementType, IndexVersion indexVersion) { int numBytes = indexVersion.onOrAfter(DenseVectorFieldMapper.MAGNITUDE_STORED_INDEX_VERSION) ? elementType.elementBytes * values.length + DenseVectorFieldMapper.MAGNITUDE_BYTES : elementType.elementBytes * values.length; diff --git a/server/src/test/java/org/elasticsearch/index/mapper/vectors/DenseVectorFieldMapperTests.java b/server/src/test/java/org/elasticsearch/index/mapper/vectors/DenseVectorFieldMapperTests.java index c756f9aeea4cf..177197bf7e7ab 100644 --- a/server/src/test/java/org/elasticsearch/index/mapper/vectors/DenseVectorFieldMapperTests.java +++ b/server/src/test/java/org/elasticsearch/index/mapper/vectors/DenseVectorFieldMapperTests.java @@ -19,8 +19,8 @@ import org.apache.lucene.search.FieldExistsQuery; import org.apache.lucene.search.Query; import org.apache.lucene.util.BytesRef; -import org.elasticsearch.Version; import org.elasticsearch.common.util.BigArrays; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.codec.CodecService; import org.elasticsearch.index.codec.PerFieldMapperCodec; import org.elasticsearch.index.mapper.DocumentMapper; @@ -239,8 +239,8 @@ public void testDefaults() throws Exception { assertThat(fields.get(0), instanceOf(BinaryDocValuesField.class)); // assert that after decoding the indexed value is equal to expected BytesRef vectorBR = fields.get(0).binaryValue(); - float[] decodedValues = decodeDenseVector(Version.CURRENT, vectorBR); - float decodedMagnitude = VectorEncoderDecoder.decodeMagnitude(Version.CURRENT, vectorBR); + float[] decodedValues = decodeDenseVector(IndexVersion.CURRENT, vectorBR); + float decodedMagnitude = VectorEncoderDecoder.decodeMagnitude(IndexVersion.CURRENT, vectorBR); assertEquals(expectedMagnitude, decodedMagnitude, 0.001f); assertArrayEquals("Decoded dense vector values is not equal to the indexed one.", validVector, decodedValues, 0.001f); } @@ -456,7 +456,7 @@ public void testInvalidParameters() { } public void testAddDocumentsToIndexBefore_V_7_5_0() throws Exception { - Version indexVersion = Version.V_7_4_0; + IndexVersion indexVersion = IndexVersion.V_7_4_0; DocumentMapper mapper = createDocumentMapper(indexVersion, fieldMapping(b -> b.field("type", "dense_vector").field("dims", 3))); float[] validVector = { -12.1f, 100.7f, -4 }; @@ -470,7 +470,7 @@ public void testAddDocumentsToIndexBefore_V_7_5_0() throws Exception { assertArrayEquals("Decoded dense vector values is not equal to the indexed one.", validVector, decodedValues, 0.001f); } - private static float[] decodeDenseVector(Version indexVersion, BytesRef encodedVector) { + private static float[] decodeDenseVector(IndexVersion indexVersion, BytesRef encodedVector) { int dimCount = VectorEncoderDecoder.denseVectorLength(indexVersion, encodedVector); float[] vector = new float[dimCount]; VectorEncoderDecoder.decodeDenseVector(indexVersion, encodedVector, vector); diff --git a/server/src/test/java/org/elasticsearch/index/mapper/vectors/DenseVectorFieldTypeTests.java b/server/src/test/java/org/elasticsearch/index/mapper/vectors/DenseVectorFieldTypeTests.java index ee3efb26c4048..a9af336c4a3e4 100644 --- a/server/src/test/java/org/elasticsearch/index/mapper/vectors/DenseVectorFieldTypeTests.java +++ b/server/src/test/java/org/elasticsearch/index/mapper/vectors/DenseVectorFieldTypeTests.java @@ -11,7 +11,7 @@ import org.apache.lucene.search.KnnByteVectorQuery; import org.apache.lucene.search.KnnFloatVectorQuery; import org.apache.lucene.search.Query; -import org.elasticsearch.Version; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.fielddata.FieldDataContext; import org.elasticsearch.index.mapper.FieldTypeTestCase; import org.elasticsearch.index.mapper.MappedFieldType; @@ -36,7 +36,7 @@ public DenseVectorFieldTypeTests() { private DenseVectorFieldType createFloatFieldType() { return new DenseVectorFieldType( "f", - Version.CURRENT, + IndexVersion.CURRENT, DenseVectorFieldMapper.ElementType.FLOAT, 5, indexed, @@ -48,7 +48,7 @@ private DenseVectorFieldType createFloatFieldType() { private DenseVectorFieldType createByteFieldType() { return new DenseVectorFieldType( "f", - Version.CURRENT, + IndexVersion.CURRENT, DenseVectorFieldMapper.ElementType.BYTE, 5, true, @@ -113,7 +113,7 @@ public void testFetchSourceValue() throws IOException { public void testFloatCreateKnnQuery() { DenseVectorFieldType unindexedField = new DenseVectorFieldType( "f", - Version.CURRENT, + IndexVersion.CURRENT, DenseVectorFieldMapper.ElementType.FLOAT, 3, false, @@ -128,7 +128,7 @@ public void testFloatCreateKnnQuery() { DenseVectorFieldType dotProductField = new DenseVectorFieldType( "f", - Version.CURRENT, + IndexVersion.CURRENT, DenseVectorFieldMapper.ElementType.FLOAT, 3, true, @@ -143,7 +143,7 @@ public void testFloatCreateKnnQuery() { DenseVectorFieldType cosineField = new DenseVectorFieldType( "f", - Version.CURRENT, + IndexVersion.CURRENT, DenseVectorFieldMapper.ElementType.FLOAT, 3, true, @@ -161,7 +161,7 @@ public void testCreateKnnQueryMaxDims() { { // float type with 2048 dims DenseVectorFieldType fieldWith2048dims = new DenseVectorFieldType( "f", - Version.CURRENT, + IndexVersion.CURRENT, DenseVectorFieldMapper.ElementType.FLOAT, 2048, true, @@ -179,7 +179,7 @@ public void testCreateKnnQueryMaxDims() { { // byte type with 2048 dims DenseVectorFieldType fieldWith2048dims = new DenseVectorFieldType( "f", - Version.CURRENT, + IndexVersion.CURRENT, DenseVectorFieldMapper.ElementType.BYTE, 2048, true, @@ -198,7 +198,7 @@ public void testCreateKnnQueryMaxDims() { public void testByteCreateKnnQuery() { DenseVectorFieldType unindexedField = new DenseVectorFieldType( "f", - Version.CURRENT, + IndexVersion.CURRENT, DenseVectorFieldMapper.ElementType.BYTE, 3, false, @@ -213,7 +213,7 @@ public void testByteCreateKnnQuery() { DenseVectorFieldType cosineField = new DenseVectorFieldType( "f", - Version.CURRENT, + IndexVersion.CURRENT, DenseVectorFieldMapper.ElementType.BYTE, 3, true, diff --git a/server/src/test/java/org/elasticsearch/index/mapper/vectors/VectorEncoderDecoderTests.java b/server/src/test/java/org/elasticsearch/index/mapper/vectors/VectorEncoderDecoderTests.java index 539f678b00180..80b08f907be8d 100644 --- a/server/src/test/java/org/elasticsearch/index/mapper/vectors/VectorEncoderDecoderTests.java +++ b/server/src/test/java/org/elasticsearch/index/mapper/vectors/VectorEncoderDecoderTests.java @@ -9,9 +9,9 @@ package org.elasticsearch.index.mapper.vectors; import org.apache.lucene.util.BytesRef; -import org.elasticsearch.Version; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.test.ESTestCase; -import org.elasticsearch.test.VersionUtils; +import org.elasticsearch.test.index.IndexVersionUtils; import java.nio.ByteBuffer; import java.util.List; @@ -24,11 +24,11 @@ public void testVectorDecodingWithOffset() { float[] inputFloats = new float[] { 1f, 2f, 3f, 4f }; float[] expected = new float[] { 2f, 3f, 4f }; int dims = 3; - for (Version version : List.of( - VersionUtils.randomVersionBetween( + for (IndexVersion version : List.of( + IndexVersionUtils.randomVersionBetween( random(), DenseVectorFieldMapper.MAGNITUDE_STORED_INDEX_VERSION, - VersionUtils.getPreviousVersion(DenseVectorFieldMapper.LITTLE_ENDIAN_FLOAT_STORED_INDEX_VERSION) + IndexVersionUtils.getPreviousVersion(DenseVectorFieldMapper.LITTLE_ENDIAN_FLOAT_STORED_INDEX_VERSION) ), DenseVectorFieldMapper.LITTLE_ENDIAN_FLOAT_STORED_INDEX_VERSION )) { diff --git a/server/src/test/java/org/elasticsearch/index/similarity/SimilarityServiceTests.java b/server/src/test/java/org/elasticsearch/index/similarity/SimilarityServiceTests.java index 7fba04097bcf2..fe6a61060d39d 100644 --- a/server/src/test/java/org/elasticsearch/index/similarity/SimilarityServiceTests.java +++ b/server/src/test/java/org/elasticsearch/index/similarity/SimilarityServiceTests.java @@ -12,9 +12,9 @@ import org.apache.lucene.search.TermStatistics; import org.apache.lucene.search.similarities.BooleanSimilarity; import org.apache.lucene.search.similarities.Similarity; -import org.elasticsearch.Version; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.index.IndexSettings; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.lucene.similarity.LegacyBM25Similarity; import org.elasticsearch.test.ESTestCase; import org.elasticsearch.test.IndexSettingsModule; @@ -73,7 +73,7 @@ public float score(float freq, long norm) { }; IllegalArgumentException e = expectThrows( IllegalArgumentException.class, - () -> SimilarityService.validateSimilarity(Version.V_7_0_0, negativeScoresSim) + () -> SimilarityService.validateSimilarity(IndexVersion.V_7_0_0, negativeScoresSim) ); assertThat(e.getMessage(), Matchers.containsString("Similarities should not return negative scores")); @@ -98,7 +98,7 @@ public float score(float freq, long norm) { }; e = expectThrows( IllegalArgumentException.class, - () -> SimilarityService.validateSimilarity(Version.V_7_0_0, decreasingScoresWithFreqSim) + () -> SimilarityService.validateSimilarity(IndexVersion.V_7_0_0, decreasingScoresWithFreqSim) ); assertThat(e.getMessage(), Matchers.containsString("Similarity scores should not decrease when term frequency increases")); @@ -123,7 +123,7 @@ public float score(float freq, long norm) { }; e = expectThrows( IllegalArgumentException.class, - () -> SimilarityService.validateSimilarity(Version.V_7_0_0, increasingScoresWithNormSim) + () -> SimilarityService.validateSimilarity(IndexVersion.V_7_0_0, increasingScoresWithNormSim) ); assertThat(e.getMessage(), Matchers.containsString("Similarity scores should not increase when norm increases")); } diff --git a/server/src/test/java/org/elasticsearch/indices/IndicesModuleTests.java b/server/src/test/java/org/elasticsearch/indices/IndicesModuleTests.java index e3fa66cf9899c..96a736eb13fa3 100644 --- a/server/src/test/java/org/elasticsearch/indices/IndicesModuleTests.java +++ b/server/src/test/java/org/elasticsearch/indices/IndicesModuleTests.java @@ -9,6 +9,7 @@ package org.elasticsearch.indices; import org.elasticsearch.Version; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.mapper.DataStreamTimestampFieldMapper; import org.elasticsearch.index.mapper.DocCountFieldMapper; import org.elasticsearch.index.mapper.FieldNamesFieldMapper; @@ -33,6 +34,7 @@ import org.elasticsearch.plugins.MapperPlugin; import org.elasticsearch.test.ESTestCase; import org.elasticsearch.test.VersionUtils; +import org.elasticsearch.test.index.IndexVersionUtils; import java.util.ArrayList; import java.util.Arrays; @@ -89,8 +91,11 @@ public Map getMetadataMappers() { public void testBuiltinMappers() { IndicesModule module = new IndicesModule(Collections.emptyList()); { - Version version = VersionUtils.randomVersionBetween(random(), Version.V_8_0_0, Version.CURRENT); - assertThat(module.getMapperRegistry().getMapperParser("object", Version.CURRENT), instanceOf(ObjectMapper.TypeParser.class)); + IndexVersion version = IndexVersionUtils.randomVersionBetween(random(), IndexVersion.V_8_0_0, IndexVersion.CURRENT); + assertThat( + module.getMapperRegistry().getMapperParser("object", IndexVersion.CURRENT), + instanceOf(ObjectMapper.TypeParser.class) + ); assertFalse(module.getMapperRegistry().getMetadataMapperParsers(version).isEmpty()); Map metadataMapperParsers = module.getMapperRegistry() .getMetadataMapperParsers(version); @@ -101,10 +106,10 @@ public void testBuiltinMappers() { } } { - Version version = VersionUtils.randomVersionBetween( + IndexVersion version = IndexVersionUtils.randomVersionBetween( random(), - Version.V_7_0_0, - VersionUtils.getPreviousVersion(Version.V_8_0_0) + IndexVersion.V_7_0_0, + IndexVersionUtils.getPreviousVersion(IndexVersion.V_8_0_0) ); assertEquals(EXPECTED_METADATA_FIELDS.length - 1, module.getMapperRegistry().getMetadataMapperParsers(version).size()); } @@ -114,14 +119,14 @@ public void testBuiltinWithPlugins() { IndicesModule noPluginsModule = new IndicesModule(Collections.emptyList()); IndicesModule module = new IndicesModule(fakePlugins); MapperRegistry registry = module.getMapperRegistry(); - assertThat(registry.getMapperParser("fake-mapper", Version.CURRENT), instanceOf(FakeMapperParser.class)); - assertNull(noPluginsModule.getMapperRegistry().getMapperParser("fake-mapper", Version.CURRENT)); + assertThat(registry.getMapperParser("fake-mapper", IndexVersion.CURRENT), instanceOf(FakeMapperParser.class)); + assertNull(noPluginsModule.getMapperRegistry().getMapperParser("fake-mapper", IndexVersion.CURRENT)); assertThat( - registry.getMetadataMapperParsers(Version.CURRENT).size(), - greaterThan(noPluginsModule.getMapperRegistry().getMetadataMapperParsers(Version.CURRENT).size()) + registry.getMetadataMapperParsers(IndexVersion.CURRENT).size(), + greaterThan(noPluginsModule.getMapperRegistry().getMetadataMapperParsers(IndexVersion.CURRENT).size()) ); Map metadataMapperParsers = module.getMapperRegistry() - .getMetadataMapperParsers(Version.CURRENT); + .getMetadataMapperParsers(IndexVersion.CURRENT); Iterator iterator = metadataMapperParsers.keySet().iterator(); assertEquals(IgnoredFieldMapper.NAME, iterator.next()); String last = null; @@ -222,14 +227,14 @@ public Map getMetadataMappers() { public void testFieldNamesIsLast() { IndicesModule module = new IndicesModule(Collections.emptyList()); - Version version = VersionUtils.randomCompatibleVersion(random(), Version.CURRENT); + IndexVersion version = VersionUtils.randomCompatibleVersion(random(), Version.CURRENT).indexVersion; List fieldNames = new ArrayList<>(module.getMapperRegistry().getMetadataMapperParsers(version).keySet()); assertEquals(FieldNamesFieldMapper.NAME, fieldNames.get(fieldNames.size() - 1)); } public void testFieldNamesIsLastWithPlugins() { IndicesModule module = new IndicesModule(fakePlugins); - Version version = VersionUtils.randomCompatibleVersion(random(), Version.CURRENT); + IndexVersion version = VersionUtils.randomCompatibleVersion(random(), Version.CURRENT).indexVersion; List fieldNames = new ArrayList<>(module.getMapperRegistry().getMetadataMapperParsers(version).keySet()); assertEquals(FieldNamesFieldMapper.NAME, fieldNames.get(fieldNames.size() - 1)); } diff --git a/server/src/test/java/org/elasticsearch/script/VectorScoreScriptUtilsTests.java b/server/src/test/java/org/elasticsearch/script/VectorScoreScriptUtilsTests.java index 841a80927ba8a..a094109ef0287 100644 --- a/server/src/test/java/org/elasticsearch/script/VectorScoreScriptUtilsTests.java +++ b/server/src/test/java/org/elasticsearch/script/VectorScoreScriptUtilsTests.java @@ -8,7 +8,7 @@ package org.elasticsearch.script; -import org.elasticsearch.Version; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.mapper.vectors.BinaryDenseVectorScriptDocValuesTests; import org.elasticsearch.index.mapper.vectors.DenseVectorFieldMapper.ElementType; import org.elasticsearch.index.mapper.vectors.KnnDenseVectorScriptDocValuesTests; @@ -42,18 +42,18 @@ public void testFloatVectorClassBindings() throws IOException { List fields = List.of( new BinaryDenseVectorDocValuesField( - BinaryDenseVectorScriptDocValuesTests.wrap(new float[][] { docVector }, ElementType.FLOAT, Version.V_7_4_0), + BinaryDenseVectorScriptDocValuesTests.wrap(new float[][] { docVector }, ElementType.FLOAT, IndexVersion.V_7_4_0), "test", ElementType.FLOAT, dims, - Version.V_7_4_0 + IndexVersion.V_7_4_0 ), new BinaryDenseVectorDocValuesField( - BinaryDenseVectorScriptDocValuesTests.wrap(new float[][] { docVector }, ElementType.FLOAT, Version.CURRENT), + BinaryDenseVectorScriptDocValuesTests.wrap(new float[][] { docVector }, ElementType.FLOAT, IndexVersion.CURRENT), "test", ElementType.FLOAT, dims, - Version.CURRENT + IndexVersion.CURRENT ), new KnnDenseVectorDocValuesField(KnnDenseVectorScriptDocValuesTests.wrap(new float[][] { docVector }), "test", dims) ); @@ -130,7 +130,7 @@ public void testByteVectorClassBindings() throws IOException { List fields = List.of( new ByteBinaryDenseVectorDocValuesField( - BinaryDenseVectorScriptDocValuesTests.wrap(new float[][] { docVector }, ElementType.BYTE, Version.CURRENT), + BinaryDenseVectorScriptDocValuesTests.wrap(new float[][] { docVector }, ElementType.BYTE, IndexVersion.CURRENT), "test", ElementType.BYTE, dims @@ -210,22 +210,22 @@ public void testByteVsFloatSimilarity() throws IOException { List fields = List.of( new BinaryDenseVectorDocValuesField( - BinaryDenseVectorScriptDocValuesTests.wrap(new float[][] { docVector }, ElementType.FLOAT, Version.V_7_4_0), + BinaryDenseVectorScriptDocValuesTests.wrap(new float[][] { docVector }, ElementType.FLOAT, IndexVersion.V_7_4_0), "field0", ElementType.FLOAT, dims, - Version.V_7_4_0 + IndexVersion.V_7_4_0 ), new BinaryDenseVectorDocValuesField( - BinaryDenseVectorScriptDocValuesTests.wrap(new float[][] { docVector }, ElementType.FLOAT, Version.CURRENT), + BinaryDenseVectorScriptDocValuesTests.wrap(new float[][] { docVector }, ElementType.FLOAT, IndexVersion.CURRENT), "field1", ElementType.FLOAT, dims, - Version.CURRENT + IndexVersion.CURRENT ), new KnnDenseVectorDocValuesField(KnnDenseVectorScriptDocValuesTests.wrap(new float[][] { docVector }), "field2", dims), new ByteBinaryDenseVectorDocValuesField( - BinaryDenseVectorScriptDocValuesTests.wrap(new float[][] { docVector }, ElementType.BYTE, Version.CURRENT), + BinaryDenseVectorScriptDocValuesTests.wrap(new float[][] { docVector }, ElementType.BYTE, IndexVersion.CURRENT), "field3", ElementType.BYTE, dims @@ -363,7 +363,7 @@ public void testByteBoundaries() throws IOException { List fields = List.of( new ByteBinaryDenseVectorDocValuesField( - BinaryDenseVectorScriptDocValuesTests.wrap(new float[][] { docVector }, ElementType.BYTE, Version.CURRENT), + BinaryDenseVectorScriptDocValuesTests.wrap(new float[][] { docVector }, ElementType.BYTE, IndexVersion.CURRENT), "test", ElementType.BYTE, dims diff --git a/server/src/test/java/org/elasticsearch/script/field/vectors/DenseVectorTests.java b/server/src/test/java/org/elasticsearch/script/field/vectors/DenseVectorTests.java index 156e4e56eb97c..2f7a9144e6b5c 100644 --- a/server/src/test/java/org/elasticsearch/script/field/vectors/DenseVectorTests.java +++ b/server/src/test/java/org/elasticsearch/script/field/vectors/DenseVectorTests.java @@ -9,14 +9,13 @@ package org.elasticsearch.script.field.vectors; import org.apache.lucene.util.BytesRef; -import org.elasticsearch.Version; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.mapper.vectors.BinaryDenseVectorScriptDocValuesTests; import org.elasticsearch.index.mapper.vectors.DenseVectorFieldMapper.ElementType; import org.elasticsearch.test.ESTestCase; import java.nio.ByteBuffer; import java.util.ArrayList; -import java.util.Arrays; import java.util.HashMap; import java.util.List; @@ -68,7 +67,7 @@ public void testFloatVsListQueryVector() { assertEquals(knn.cosineSimilarity(arrayQV), knn.cosineSimilarity(listQV), 0.001f); assertEquals(knn.cosineSimilarity((Object) listQV), knn.cosineSimilarity((Object) arrayQV), 0.001f); - for (Version indexVersion : Arrays.asList(Version.V_7_4_0, Version.CURRENT)) { + for (IndexVersion indexVersion : List.of(IndexVersion.V_7_4_0, IndexVersion.CURRENT)) { BytesRef value = BinaryDenseVectorScriptDocValuesTests.mockEncodeDenseVector(docVector, ElementType.FLOAT, indexVersion); BinaryDenseVector bdv = new BinaryDenseVector(docVector, value, dims, indexVersion); @@ -114,7 +113,7 @@ public void testByteVsListQueryVector() { assertEquals(knn.cosineSimilarity(arrayQV), knn.cosineSimilarity(listQV), 0.001f); assertEquals(knn.cosineSimilarity((Object) listQV), knn.cosineSimilarity((Object) arrayQV), 0.001f); - BytesRef value = BinaryDenseVectorScriptDocValuesTests.mockEncodeDenseVector(floatVector, ElementType.BYTE, Version.CURRENT); + BytesRef value = BinaryDenseVectorScriptDocValuesTests.mockEncodeDenseVector(floatVector, ElementType.BYTE, IndexVersion.CURRENT); byte[] byteVectorValue = new byte[dims]; System.arraycopy(value.bytes, value.offset, byteVectorValue, 0, dims); ByteBinaryDenseVector bdv = new ByteBinaryDenseVector(byteVectorValue, value, dims); @@ -221,7 +220,7 @@ public void testFloatUnsupported() { e = expectThrows(UnsupportedOperationException.class, () -> knn.cosineSimilarity((Object) queryVector)); assertEquals(e.getMessage(), "use [double cosineSimilarity(float[] queryVector, boolean normalizeQueryVector)] instead"); - BinaryDenseVector binary = new BinaryDenseVector(docVector, new BytesRef(docBuffer.array()), dims, Version.CURRENT); + BinaryDenseVector binary = new BinaryDenseVector(docVector, new BytesRef(docBuffer.array()), dims, IndexVersion.CURRENT); e = expectThrows(UnsupportedOperationException.class, () -> binary.dotProduct(queryVector)); assertEquals(e.getMessage(), "use [double dotProduct(float[] queryVector)] instead"); diff --git a/server/src/test/java/org/elasticsearch/search/aggregations/bucket/filter/FiltersAggregatorTests.java b/server/src/test/java/org/elasticsearch/search/aggregations/bucket/filter/FiltersAggregatorTests.java index 96ccee685e071..5a8f8f28cfd84 100644 --- a/server/src/test/java/org/elasticsearch/search/aggregations/bucket/filter/FiltersAggregatorTests.java +++ b/server/src/test/java/org/elasticsearch/search/aggregations/bucket/filter/FiltersAggregatorTests.java @@ -30,12 +30,12 @@ import org.apache.lucene.tests.index.RandomIndexWriter; import org.apache.lucene.util.Accountable; import org.apache.lucene.util.BytesRef; -import org.elasticsearch.Version; import org.elasticsearch.common.lucene.index.ElasticsearchDirectoryReader; import org.elasticsearch.common.lucene.search.Queries; import org.elasticsearch.common.time.DateFormatter; import org.elasticsearch.core.CheckedConsumer; import org.elasticsearch.index.IndexSettings; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.cache.bitset.BitsetFilterCache; import org.elasticsearch.index.mapper.DateFieldMapper; import org.elasticsearch.index.mapper.DateFieldMapper.Resolution; @@ -500,7 +500,7 @@ public void testNested() throws IOException { assertThat(filters1.getBucketByKey("q1").getDocCount(), equalTo(1L)); }, new AggTestConfig(new FiltersAggregationBuilder("test", new KeyedFilter("q1", new TermQueryBuilder("author", "foo"))), ft) - .withQuery(Queries.newNonNestedFilter(Version.CURRENT)) + .withQuery(Queries.newNonNestedFilter(IndexVersion.CURRENT)) ); testCase(buildIndex, result -> { InternalFilters filters = (InternalFilters) result; @@ -508,7 +508,7 @@ public void testNested() throws IOException { assertThat(filters.getBucketByKey("q1").getDocCount(), equalTo(1L)); }, new AggTestConfig(new FiltersAggregationBuilder("test", new KeyedFilter("q1", new MatchAllQueryBuilder())), ft).withQuery( - Queries.newNonNestedFilter(Version.CURRENT) + Queries.newNonNestedFilter(IndexVersion.CURRENT) ) ); } diff --git a/server/src/test/java/org/elasticsearch/search/aggregations/bucket/nested/NestedAggregatorTests.java b/server/src/test/java/org/elasticsearch/search/aggregations/bucket/nested/NestedAggregatorTests.java index 075769fc2e52a..15a0c0342ee5d 100644 --- a/server/src/test/java/org/elasticsearch/search/aggregations/bucket/nested/NestedAggregatorTests.java +++ b/server/src/test/java/org/elasticsearch/search/aggregations/bucket/nested/NestedAggregatorTests.java @@ -26,12 +26,12 @@ import org.apache.lucene.store.Directory; import org.apache.lucene.tests.index.RandomIndexWriter; import org.apache.lucene.util.BytesRef; -import org.elasticsearch.Version; import org.elasticsearch.common.lucene.search.Queries; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.core.CheckedConsumer; import org.elasticsearch.core.Strings; import org.elasticsearch.core.Tuple; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.mapper.IdFieldMapper; import org.elasticsearch.index.mapper.KeywordFieldMapper; import org.elasticsearch.index.mapper.LuceneDocument; @@ -367,7 +367,7 @@ public void testResetRootDocId() throws Exception { MappedFieldType fieldType = new NumberFieldMapper.NumberFieldType(VALUE_FIELD_NAME, NumberFieldMapper.NumberType.LONG); BooleanQuery.Builder bq = new BooleanQuery.Builder(); - bq.add(Queries.newNonNestedFilter(Version.CURRENT), BooleanClause.Occur.MUST); + bq.add(Queries.newNonNestedFilter(IndexVersion.CURRENT), BooleanClause.Occur.MUST); bq.add(new TermQuery(new Term(IdFieldMapper.NAME, Uid.encodeId("2"))), BooleanClause.Occur.MUST_NOT); InternalNested nested = searchAndReduce( @@ -644,7 +644,7 @@ public void testPreGetChildLeafCollectors() throws IOException { Filter filter = searchAndReduce( newIndexSearcher(indexReader), new AggTestConfig(filterAggregationBuilder, fieldType1, fieldType2).withQuery( - Queries.newNonNestedFilter(Version.CURRENT) + Queries.newNonNestedFilter(IndexVersion.CURRENT) ) ); @@ -906,6 +906,6 @@ protected List objectMappers() { ); public static NestedObjectMapper nestedObject(String path) { - return new NestedObjectMapper.Builder(path, Version.CURRENT).build(MapperBuilderContext.root(false)); + return new NestedObjectMapper.Builder(path, IndexVersion.CURRENT).build(MapperBuilderContext.root(false)); } } diff --git a/server/src/test/java/org/elasticsearch/search/aggregations/bucket/terms/TermsAggregatorTests.java b/server/src/test/java/org/elasticsearch/search/aggregations/bucket/terms/TermsAggregatorTests.java index 4e9f267b44088..1bffbbc5e0b28 100644 --- a/server/src/test/java/org/elasticsearch/search/aggregations/bucket/terms/TermsAggregatorTests.java +++ b/server/src/test/java/org/elasticsearch/search/aggregations/bucket/terms/TermsAggregatorTests.java @@ -36,7 +36,6 @@ import org.apache.lucene.tests.index.RandomIndexWriter; import org.apache.lucene.util.BytesRef; import org.apache.lucene.util.NumericUtils; -import org.elasticsearch.Version; import org.elasticsearch.common.breaker.CircuitBreaker; import org.elasticsearch.common.geo.GeoPoint; import org.elasticsearch.common.lucene.search.Queries; @@ -47,6 +46,7 @@ import org.elasticsearch.common.util.MockPageCacheRecycler; import org.elasticsearch.core.CheckedConsumer; import org.elasticsearch.core.Strings; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.mapper.DateFieldMapper.DateFieldType; import org.elasticsearch.index.mapper.DocCountFieldMapper; import org.elasticsearch.index.mapper.GeoPointFieldMapper; @@ -1437,7 +1437,9 @@ public void testHeisenpig() throws IOException { // match root document only StringTerms result = searchAndReduce( newIndexSearcher(indexReader), - new AggTestConfig(terms, animalFieldType, nestedFieldType).withQuery(Queries.newNonNestedFilter(Version.CURRENT)) + new AggTestConfig(terms, animalFieldType, nestedFieldType).withQuery( + Queries.newNonNestedFilter(IndexVersion.CURRENT) + ) ); assertThat(result.getBuckets().get(0).getKeyAsString(), equalTo("pig")); assertThat(result.getBuckets().get(0).docCount, equalTo(1L)); diff --git a/server/src/test/java/org/elasticsearch/search/fetch/subphase/FieldFetcherTests.java b/server/src/test/java/org/elasticsearch/search/fetch/subphase/FieldFetcherTests.java index d6fbf27d39e00..d0994f89b12ac 100644 --- a/server/src/test/java/org/elasticsearch/search/fetch/subphase/FieldFetcherTests.java +++ b/server/src/test/java/org/elasticsearch/search/fetch/subphase/FieldFetcherTests.java @@ -18,6 +18,7 @@ import org.elasticsearch.common.document.DocumentField; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.index.IndexSettings; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.fielddata.FieldDataContext; import org.elasticsearch.index.fielddata.IndexFieldData; import org.elasticsearch.index.mapper.FieldNamesFieldMapper; @@ -264,7 +265,7 @@ public void testMetadataFields() throws IOException { SeqNoFieldMapper.NAME, SourceFieldMapper.NAME, FieldNamesFieldMapper.NAME, - NestedPathFieldMapper.name(Version.CURRENT) + NestedPathFieldMapper.name(IndexVersion.CURRENT) )) { expectThrows(UnsupportedOperationException.class, () -> fetchFields(mapperService, source, fieldname)); } diff --git a/server/src/test/java/org/elasticsearch/search/query/ScriptScoreQueryTests.java b/server/src/test/java/org/elasticsearch/search/query/ScriptScoreQueryTests.java index bc118cb2e718a..eeb0c066f762f 100644 --- a/server/src/test/java/org/elasticsearch/search/query/ScriptScoreQueryTests.java +++ b/server/src/test/java/org/elasticsearch/search/query/ScriptScoreQueryTests.java @@ -20,9 +20,9 @@ import org.apache.lucene.search.ScoreMode; import org.apache.lucene.search.Weight; import org.apache.lucene.store.Directory; -import org.elasticsearch.Version; import org.elasticsearch.common.lucene.search.Queries; import org.elasticsearch.common.lucene.search.function.ScriptScoreQuery; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.script.DocReader; import org.elasticsearch.script.ScoreScript; import org.elasticsearch.script.Script; @@ -88,7 +88,7 @@ public void testExplain() throws IOException { null, "index", 0, - Version.CURRENT + IndexVersion.CURRENT ); Weight weight = query.createWeight(searcher, ScoreMode.COMPLETE, 1.0f); Explanation explanation = weight.explain(leafReaderContext, 0); @@ -109,7 +109,7 @@ public void testExplainDefault() throws IOException { null, "index", 0, - Version.CURRENT + IndexVersion.CURRENT ); Weight weight = query.createWeight(searcher, ScoreMode.COMPLETE, 1.0f); Explanation explanation = weight.explain(leafReaderContext, 0); @@ -134,7 +134,7 @@ public void testExplainDefaultNoScore() throws IOException { null, "index", 0, - Version.CURRENT + IndexVersion.CURRENT ); Weight weight = query.createWeight(searcher, ScoreMode.COMPLETE, 1.0f); Explanation explanation = weight.explain(leafReaderContext, 0); @@ -157,7 +157,7 @@ public void testScriptScoreErrorOnNegativeScore() { null, "index", 0, - Version.CURRENT + IndexVersion.CURRENT ); IllegalArgumentException e = expectThrows(IllegalArgumentException.class, () -> searcher.search(query, 1)); assertTrue(e.getMessage().contains("Must be a non-negative score!")); diff --git a/server/src/test/java/org/elasticsearch/search/sort/AbstractSortTestCase.java b/server/src/test/java/org/elasticsearch/search/sort/AbstractSortTestCase.java index 6811179644c09..47f1d75d4a0c5 100644 --- a/server/src/test/java/org/elasticsearch/search/sort/AbstractSortTestCase.java +++ b/server/src/test/java/org/elasticsearch/search/sort/AbstractSortTestCase.java @@ -10,13 +10,13 @@ import org.apache.lucene.search.IndexSearcher; import org.apache.lucene.search.SortField; -import org.elasticsearch.Version; import org.elasticsearch.cluster.metadata.IndexMetadata; import org.elasticsearch.common.io.stream.NamedWriteableRegistry; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.env.Environment; import org.elasticsearch.index.Index; import org.elasticsearch.index.IndexSettings; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.cache.bitset.BitsetFilterCache; import org.elasticsearch.index.fielddata.FieldDataContext; import org.elasticsearch.index.fielddata.IndexFieldData; @@ -186,7 +186,7 @@ protected final SearchExecutionContext createMockSearchExecutionContext(IndexSea Index index = new Index(randomAlphaOfLengthBetween(1, 10), "_na_"); IndexSettings idxSettings = IndexSettingsModule.newIndexSettings( index, - Settings.builder().put(IndexMetadata.SETTING_VERSION_CREATED, Version.CURRENT).build() + Settings.builder().put(IndexMetadata.SETTING_VERSION_CREATED, IndexVersion.CURRENT.id()).build() ); BitsetFilterCache bitsetFilterCache = new BitsetFilterCache(idxSettings, mock(BitsetFilterCache.Listener.class)); BiFunction> indexFieldDataLookup = (fieldType, fdc) -> { @@ -194,7 +194,7 @@ protected final SearchExecutionContext createMockSearchExecutionContext(IndexSea return builder.build(new IndexFieldDataCache.None(), null); }; NestedLookup nestedLookup = NestedLookup.build( - List.of(new NestedObjectMapper.Builder("path", Version.CURRENT).build(MapperBuilderContext.root(false))) + List.of(new NestedObjectMapper.Builder("path", IndexVersion.CURRENT).build(MapperBuilderContext.root(false))) ); return new SearchExecutionContext( 0, diff --git a/test/framework/src/main/java/org/elasticsearch/cluster/metadata/DataStreamTestHelper.java b/test/framework/src/main/java/org/elasticsearch/cluster/metadata/DataStreamTestHelper.java index b35dc78053c64..452b0e5b565c7 100644 --- a/test/framework/src/main/java/org/elasticsearch/cluster/metadata/DataStreamTestHelper.java +++ b/test/framework/src/main/java/org/elasticsearch/cluster/metadata/DataStreamTestHelper.java @@ -29,6 +29,7 @@ import org.elasticsearch.index.IndexSettingProvider; import org.elasticsearch.index.IndexSettingProviders; import org.elasticsearch.index.IndexSettings; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.mapper.DataStreamTimestampFieldMapper; import org.elasticsearch.index.mapper.DateFieldMapper; import org.elasticsearch.index.mapper.DocumentMapper; @@ -476,7 +477,7 @@ public static MetadataRolloverService getMetadataRolloverService( null, ScriptCompiler.NONE, false, - Version.CURRENT + IndexVersion.CURRENT ).build(MapperBuilderContext.root(false)); ClusterService clusterService = ClusterServiceUtils.createClusterService(testThreadPool); Environment env = mock(Environment.class); @@ -494,7 +495,7 @@ public static MetadataRolloverService getMetadataRolloverService( DateFieldMapper.DEFAULT_DATE_TIME_FORMATTER, ScriptCompiler.NONE, true, - Version.CURRENT + IndexVersion.CURRENT ) ); MetadataFieldMapper dtfm = getDataStreamTimestampFieldMapper(); diff --git a/test/framework/src/main/java/org/elasticsearch/index/mapper/FieldTypeTestCase.java b/test/framework/src/main/java/org/elasticsearch/index/mapper/FieldTypeTestCase.java index d42467a415f0e..1c25253b2f3a9 100644 --- a/test/framework/src/main/java/org/elasticsearch/index/mapper/FieldTypeTestCase.java +++ b/test/framework/src/main/java/org/elasticsearch/index/mapper/FieldTypeTestCase.java @@ -7,7 +7,7 @@ */ package org.elasticsearch.index.mapper; -import org.elasticsearch.Version; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.query.SearchExecutionContext; import org.elasticsearch.search.lookup.FieldLookup; import org.elasticsearch.search.lookup.LeafSearchLookup; @@ -42,7 +42,7 @@ private static SearchExecutionContext createMockSearchExecutionContext(boolean a when(searchExecutionContext.isSourceEnabled()).thenReturn(true); SearchLookup searchLookup = mock(SearchLookup.class); when(searchExecutionContext.lookup()).thenReturn(searchLookup); - when(searchExecutionContext.indexVersionCreated()).thenReturn(Version.CURRENT); + when(searchExecutionContext.indexVersionCreated()).thenReturn(IndexVersion.CURRENT); return searchExecutionContext; } diff --git a/test/framework/src/main/java/org/elasticsearch/index/mapper/MapperServiceTestCase.java b/test/framework/src/main/java/org/elasticsearch/index/mapper/MapperServiceTestCase.java index 888540bfe003d..aa6186c0d3ad0 100644 --- a/test/framework/src/main/java/org/elasticsearch/index/mapper/MapperServiceTestCase.java +++ b/test/framework/src/main/java/org/elasticsearch/index/mapper/MapperServiceTestCase.java @@ -35,6 +35,7 @@ import org.elasticsearch.core.CheckedConsumer; import org.elasticsearch.core.Nullable; import org.elasticsearch.index.IndexSettings; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.analysis.AnalyzerScope; import org.elasticsearch.index.analysis.IndexAnalyzers; import org.elasticsearch.index.analysis.NameOrDefinition; @@ -138,7 +139,7 @@ protected final DocumentMapper createTimeSeriesModeDocumentMapper(XContentBuilde return createMapperService(settings, mappings).documentMapper(); } - protected final DocumentMapper createDocumentMapper(Version version, XContentBuilder mappings) throws IOException { + protected final DocumentMapper createDocumentMapper(IndexVersion version, XContentBuilder mappings) throws IOException { return createMapperService(version, mappings).documentMapper(); } @@ -152,8 +153,8 @@ protected final MapperService createMapperService(XContentBuilder mappings) thro return createMapperService(getVersion(), mappings); } - protected Version getVersion() { - return Version.CURRENT; + protected IndexVersion getVersion() { + return IndexVersion.CURRENT; } protected final MapperService createMapperService(Settings settings, XContentBuilder mappings) throws IOException { @@ -171,12 +172,12 @@ protected final MapperService createMapperService(String mappings) throws IOExce } protected final MapperService createMapperService(Settings settings, String mappings) throws IOException { - MapperService mapperService = createMapperService(Version.CURRENT, settings, () -> true, mapping(b -> {})); + MapperService mapperService = createMapperService(IndexVersion.CURRENT, settings, () -> true, mapping(b -> {})); merge(mapperService, mappings); return mapperService; } - protected final MapperService createMapperService(Version version, XContentBuilder mapping) throws IOException { + protected final MapperService createMapperService(IndexVersion version, XContentBuilder mapping) throws IOException { return createMapperService(version, getIndexSettings(), () -> true, mapping); } @@ -184,7 +185,7 @@ protected final MapperService createMapperService(Version version, XContentBuild * Create a {@link MapperService} like we would for an index. */ protected final MapperService createMapperService( - Version version, + IndexVersion version, Settings settings, BooleanSupplier idFieldDataEnabled, XContentBuilder mapping @@ -195,7 +196,7 @@ protected final MapperService createMapperService( return mapperService; } - protected final MapperService createMapperService(Version version, Settings settings, BooleanSupplier idFieldDataEnabled) { + protected final MapperService createMapperService(IndexVersion version, Settings settings, BooleanSupplier idFieldDataEnabled) { IndexSettings indexSettings = createIndexSettings(version, settings); MapperRegistry mapperRegistry = new IndicesModule( getPlugins().stream().filter(p -> p instanceof MapperPlugin).map(p -> (MapperPlugin) p).collect(toList()) @@ -225,8 +226,8 @@ protected T compileScript(Script script, ScriptContext context) { throw new UnsupportedOperationException("Cannot compile script " + Strings.toString(script)); } - protected static IndexSettings createIndexSettings(Version version, Settings settings) { - settings = indexSettings(1, 0).put(settings).put("index.version.created", version).build(); + protected static IndexSettings createIndexSettings(IndexVersion version, Settings settings) { + settings = indexSettings(1, 0).put(settings).put("index.version.created", version.id()).build(); IndexMetadata meta = IndexMetadata.builder("index").settings(settings).build(); return new IndexSettings(meta, settings); } diff --git a/test/framework/src/main/java/org/elasticsearch/index/mapper/MapperTestCase.java b/test/framework/src/main/java/org/elasticsearch/index/mapper/MapperTestCase.java index d412173860be7..1f3989a0f7f93 100644 --- a/test/framework/src/main/java/org/elasticsearch/index/mapper/MapperTestCase.java +++ b/test/framework/src/main/java/org/elasticsearch/index/mapper/MapperTestCase.java @@ -25,7 +25,6 @@ import org.apache.lucene.tests.index.RandomIndexWriter; import org.apache.lucene.tests.util.LuceneTestCase; import org.apache.lucene.util.SetOnce; -import org.elasticsearch.Version; import org.elasticsearch.cluster.metadata.IndexMetadata; import org.elasticsearch.common.Strings; import org.elasticsearch.common.bytes.BytesReference; @@ -33,6 +32,7 @@ import org.elasticsearch.common.xcontent.XContentHelper; import org.elasticsearch.core.CheckedConsumer; import org.elasticsearch.index.IndexSettings; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.fielddata.FieldDataContext; import org.elasticsearch.index.fielddata.IndexFieldData; import org.elasticsearch.index.fielddata.IndexFieldDataCache; @@ -370,8 +370,8 @@ public final void testEmptyName() { } public final void testBlankName() { - Version version = getVersion(); - assumeTrue("blank field names are rejected from 8.6.0 onwards", version.onOrAfter(Version.V_8_6_0)); + IndexVersion version = getVersion(); + assumeTrue("blank field names are rejected from 8.6.0 onwards", version.onOrAfter(IndexVersion.V_8_6_0)); MapperParsingException e = expectThrows(MapperParsingException.class, () -> createMapperService(version, mapping(b -> { b.startObject(" "); minimalMapping(b); @@ -476,7 +476,7 @@ public final void testMeta() throws IOException { public final void testDeprecatedBoost() throws IOException { try { - createMapperService(Version.V_7_10_0, fieldMapping(b -> { + createMapperService(IndexVersion.V_7_10_0, fieldMapping(b -> { minimalMapping(b); b.field("boost", 2.0); })); @@ -489,10 +489,13 @@ public final void testDeprecatedBoost() throws IOException { assertThat(e.getMessage(), anyOf(containsString("Unknown parameter [boost]"), containsString("[boost : 2.0]"))); } - MapperParsingException e = expectThrows(MapperParsingException.class, () -> createMapperService(Version.V_8_0_0, fieldMapping(b -> { - minimalMapping(b); - b.field("boost", 2.0); - }))); + MapperParsingException e = expectThrows( + MapperParsingException.class, + () -> createMapperService(IndexVersion.V_8_0_0, fieldMapping(b -> { + minimalMapping(b); + b.field("boost", 2.0); + })) + ); assertThat(e.getMessage(), anyOf(containsString("Unknown parameter [boost]"), containsString("[boost : 2.0]"))); assertParseMinimalWarnings(); @@ -972,7 +975,7 @@ public final void testMinimalIsInvalidInRoutingPath() throws IOException { MapperService mapper = createMapperService(fieldMapping(this::minimalMapping)); try { IndexSettings settings = createIndexSettings( - Version.CURRENT, + IndexVersion.CURRENT, Settings.builder() .put(IndexSettings.MODE.getKey(), "time_series") .put(IndexMetadata.INDEX_ROUTING_PATH.getKey(), "field") diff --git a/test/framework/src/main/java/org/elasticsearch/index/mapper/MetadataMapperTestCase.java b/test/framework/src/main/java/org/elasticsearch/index/mapper/MetadataMapperTestCase.java index 1b9dcd1a5cf5a..4ffe7e897d8f6 100644 --- a/test/framework/src/main/java/org/elasticsearch/index/mapper/MetadataMapperTestCase.java +++ b/test/framework/src/main/java/org/elasticsearch/index/mapper/MetadataMapperTestCase.java @@ -8,10 +8,10 @@ package org.elasticsearch.index.mapper; -import org.elasticsearch.Version; import org.elasticsearch.common.compress.CompressedXContent; import org.elasticsearch.core.CheckedConsumer; -import org.elasticsearch.test.VersionUtils; +import org.elasticsearch.index.IndexVersion; +import org.elasticsearch.test.index.IndexVersionUtils; import org.elasticsearch.xcontent.XContentBuilder; import java.io.IOException; @@ -30,7 +30,7 @@ public abstract class MetadataMapperTestCase extends MapperServiceTestCase { protected abstract boolean isConfigurable(); - protected boolean isSupportedOn(Version version) { + protected boolean isSupportedOn(IndexVersion version) { return true; } @@ -105,7 +105,7 @@ public final void testUpdates() throws IOException { public final void testUnsupportedParametersAreRejected() throws IOException { assumeTrue("Metadata field " + fieldName() + " isn't configurable", isConfigurable()); - Version version = VersionUtils.randomIndexCompatibleVersion(random()); + IndexVersion version = IndexVersionUtils.randomCompatibleVersion(random()); assumeTrue("Metadata field " + fieldName() + " is not supported on version " + version, isSupportedOn(version)); MapperService mapperService = createMapperService(version, mapping(xContentBuilder -> {})); String mappingAsString = "{\n" @@ -129,7 +129,7 @@ public final void testUnsupportedParametersAreRejected() throws IOException { public final void testFixedMetaFieldsAreNotConfigurable() throws IOException { assumeFalse("Metadata field " + fieldName() + " is configurable", isConfigurable()); - Version version = VersionUtils.randomIndexCompatibleVersion(random()); + IndexVersion version = IndexVersionUtils.randomCompatibleVersion(random()); assumeTrue("Metadata field " + fieldName() + " is not supported on version " + version, isSupportedOn(version)); MapperService mapperService = createMapperService(version, mapping(xContentBuilder -> {})); String mappingAsString = "{\n" + " \"_doc\" : {\n" + " \"" + fieldName() + "\" : {\n" + " }\n" + " }\n" + "}"; @@ -142,8 +142,8 @@ public final void testFixedMetaFieldsAreNotConfigurable() throws IOException { public void testTypeAndFriendsAreAcceptedBefore_8_6_0() throws IOException { assumeTrue("Metadata field " + fieldName() + " isn't configurable", isConfigurable()); - Version previousVersion = VersionUtils.getPreviousVersion(Version.V_8_6_0); - Version version = VersionUtils.randomVersionBetween(random(), previousVersion.minimumIndexCompatibilityVersion(), previousVersion); + IndexVersion previousVersion = IndexVersionUtils.getPreviousVersion(IndexVersion.V_8_6_0); + IndexVersion version = IndexVersionUtils.randomVersionBetween(random(), IndexVersion.V_7_0_0, previousVersion); assumeTrue("Metadata field " + fieldName() + " is not supported on version " + version, isSupportedOn(version)); MapperService mapperService = createMapperService(version, mapping(b -> {})); // these parameters were previously silently ignored, they will still be ignored in existing indices @@ -166,7 +166,7 @@ public void testTypeAndFriendsAreAcceptedBefore_8_6_0() throws IOException { public void testTypeAndFriendsAreDeprecatedFrom_8_6_0() throws IOException { assumeTrue("Metadata field " + fieldName() + " isn't configurable", isConfigurable()); - Version version = VersionUtils.randomVersionBetween(random(), Version.V_8_6_0, Version.CURRENT); + IndexVersion version = IndexVersionUtils.randomVersionBetween(random(), IndexVersion.V_8_6_0, IndexVersion.CURRENT); assumeTrue("Metadata field " + fieldName() + " is not supported on version " + version, isSupportedOn(version)); MapperService mapperService = createMapperService(version, mapping(b -> {})); // these parameters were previously silently ignored, they are now deprecated in new indices diff --git a/test/framework/src/main/java/org/elasticsearch/index/mapper/TestDocumentParserContext.java b/test/framework/src/main/java/org/elasticsearch/index/mapper/TestDocumentParserContext.java index a3c71d2d25366..8cda663e5f006 100644 --- a/test/framework/src/main/java/org/elasticsearch/index/mapper/TestDocumentParserContext.java +++ b/test/framework/src/main/java/org/elasticsearch/index/mapper/TestDocumentParserContext.java @@ -9,9 +9,9 @@ package org.elasticsearch.index.mapper; import org.elasticsearch.TransportVersion; -import org.elasticsearch.Version; import org.elasticsearch.common.lucene.Lucene; import org.elasticsearch.common.settings.Settings; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.xcontent.XContentParser; /** @@ -53,12 +53,12 @@ private TestDocumentParserContext(MappingLookup mappingLookup, SourceToParse sou s -> null, s -> null, s -> null, - Version.CURRENT, + IndexVersion.CURRENT, () -> TransportVersion.current(), () -> null, null, (type, name) -> Lucene.STANDARD_ANALYZER, - MapperTestCase.createIndexSettings(Version.CURRENT, Settings.EMPTY), + MapperTestCase.createIndexSettings(IndexVersion.CURRENT, Settings.EMPTY), null ), source, diff --git a/test/framework/src/main/java/org/elasticsearch/search/aggregations/AggregatorTestCase.java b/test/framework/src/main/java/org/elasticsearch/search/aggregations/AggregatorTestCase.java index 0e1a24887cd1a..c416ca4a084ed 100644 --- a/test/framework/src/main/java/org/elasticsearch/search/aggregations/AggregatorTestCase.java +++ b/test/framework/src/main/java/org/elasticsearch/search/aggregations/AggregatorTestCase.java @@ -66,6 +66,7 @@ import org.elasticsearch.core.Strings; import org.elasticsearch.index.Index; import org.elasticsearch.index.IndexSettings; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.analysis.IndexAnalyzers; import org.elasticsearch.index.cache.bitset.BitsetFilterCache; import org.elasticsearch.index.cache.query.DisabledQueryCache; @@ -1218,7 +1219,7 @@ private static class MockParserContext extends MappingParserContext { null, null, null, - Version.CURRENT, + IndexVersion.CURRENT, () -> TransportVersion.current(), null, ScriptCompiler.NONE, diff --git a/test/framework/src/main/java/org/elasticsearch/test/index/IndexVersionUtils.java b/test/framework/src/main/java/org/elasticsearch/test/index/IndexVersionUtils.java index e57f2f4d6b3fb..3a4e13562bd9b 100644 --- a/test/framework/src/main/java/org/elasticsearch/test/index/IndexVersionUtils.java +++ b/test/framework/src/main/java/org/elasticsearch/test/index/IndexVersionUtils.java @@ -112,4 +112,9 @@ public static IndexVersion getNextVersion(IndexVersion version) { public static IndexVersion randomCompatibleVersion(Random random) { return randomVersionBetween(random, IndexVersion.MINIMUM_COMPATIBLE, IndexVersion.CURRENT); } + + /** Returns a random {@code IndexVersion} that is compatible with the previous version to {@code version} */ + public static IndexVersion randomPreviousCompatibleVersion(Random random, IndexVersion version) { + return randomVersionBetween(random, IndexVersion.MINIMUM_COMPATIBLE, getPreviousVersion(version)); + } } diff --git a/x-pack/plugin/mapper-aggregate-metric/src/main/java/org/elasticsearch/xpack/aggregatemetric/mapper/AggregateDoubleMetricFieldMapper.java b/x-pack/plugin/mapper-aggregate-metric/src/main/java/org/elasticsearch/xpack/aggregatemetric/mapper/AggregateDoubleMetricFieldMapper.java index 0b480b7f92800..0cca27249eec1 100644 --- a/x-pack/plugin/mapper-aggregate-metric/src/main/java/org/elasticsearch/xpack/aggregatemetric/mapper/AggregateDoubleMetricFieldMapper.java +++ b/x-pack/plugin/mapper-aggregate-metric/src/main/java/org/elasticsearch/xpack/aggregatemetric/mapper/AggregateDoubleMetricFieldMapper.java @@ -15,10 +15,10 @@ import org.apache.lucene.search.SortField; import org.apache.lucene.search.SortedNumericSortField; import org.apache.lucene.util.NumericUtils; -import org.elasticsearch.Version; import org.elasticsearch.common.time.DateMathParser; import org.elasticsearch.common.util.BigArrays; import org.elasticsearch.index.IndexMode; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.fielddata.FieldDataContext; import org.elasticsearch.index.fielddata.IndexFieldData; import org.elasticsearch.index.fielddata.ScriptDocValues; @@ -158,10 +158,10 @@ public static class Builder extends FieldMapper.Builder { } }, m -> toType(m).defaultMetric, XContentBuilder::field, Objects::toString); - private final Version indexCreatedVersion; + private final IndexVersion indexCreatedVersion; private final IndexMode indexMode; - public Builder(String name, Boolean ignoreMalformedByDefault, Version indexCreatedVersion, IndexMode mode) { + public Builder(String name, Boolean ignoreMalformedByDefault, IndexVersion indexCreatedVersion, IndexMode mode) { super(name); this.ignoreMalformed = Parameter.boolParam( Names.IGNORE_MALFORMED, @@ -511,7 +511,7 @@ public MetricType getMetricType() { private final boolean ignoreMalformedByDefault; - private final Version indexCreatedVersion; + private final IndexVersion indexCreatedVersion; /** A set of metrics supported */ private final EnumSet metrics; diff --git a/x-pack/plugin/mapper-aggregate-metric/src/test/java/org/elasticsearch/xpack/aggregatemetric/mapper/AggregateDoubleMetricFieldTypeTests.java b/x-pack/plugin/mapper-aggregate-metric/src/test/java/org/elasticsearch/xpack/aggregatemetric/mapper/AggregateDoubleMetricFieldTypeTests.java index 9fcc24a12d8de..af80b8ea9ff24 100644 --- a/x-pack/plugin/mapper-aggregate-metric/src/test/java/org/elasticsearch/xpack/aggregatemetric/mapper/AggregateDoubleMetricFieldTypeTests.java +++ b/x-pack/plugin/mapper-aggregate-metric/src/test/java/org/elasticsearch/xpack/aggregatemetric/mapper/AggregateDoubleMetricFieldTypeTests.java @@ -15,8 +15,8 @@ import org.apache.lucene.search.Query; import org.apache.lucene.store.Directory; import org.apache.lucene.tests.index.RandomIndexWriter; -import org.elasticsearch.Version; import org.elasticsearch.common.lucene.search.function.ScriptScoreQuery; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.fielddata.FieldDataContext; import org.elasticsearch.index.fielddata.ScriptDocValues; import org.elasticsearch.index.mapper.FieldTypeTestCase; @@ -147,7 +147,7 @@ public double execute(ExplanationHolder explanation) { } }; } - }, searchExecutionContext.lookup(), 7f, "test", 0, Version.CURRENT)), equalTo(2)); + }, searchExecutionContext.lookup(), 7f, "test", 0, IndexVersion.CURRENT)), equalTo(2)); } } } diff --git a/x-pack/plugin/rollup/src/test/java/org/elasticsearch/xpack/rollup/job/RollupIndexerIndexingTests.java b/x-pack/plugin/rollup/src/test/java/org/elasticsearch/xpack/rollup/job/RollupIndexerIndexingTests.java index 596dc042dedcd..040e8e51e516e 100644 --- a/x-pack/plugin/rollup/src/test/java/org/elasticsearch/xpack/rollup/job/RollupIndexerIndexingTests.java +++ b/x-pack/plugin/rollup/src/test/java/org/elasticsearch/xpack/rollup/job/RollupIndexerIndexingTests.java @@ -20,7 +20,6 @@ import org.apache.lucene.tests.index.RandomIndexWriter; import org.apache.lucene.tests.util.LuceneTestCase; import org.apache.lucene.util.BytesRef; -import org.elasticsearch.Version; import org.elasticsearch.action.ActionListener; import org.elasticsearch.action.DocWriteRequest; import org.elasticsearch.action.bulk.BulkItemResponse; @@ -35,6 +34,7 @@ import org.elasticsearch.common.time.DateFormatter; import org.elasticsearch.core.TimeValue; import org.elasticsearch.index.IndexSettings; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.mapper.DateFieldMapper; import org.elasticsearch.index.mapper.KeywordFieldMapper; import org.elasticsearch.index.mapper.MappedFieldType; @@ -742,7 +742,7 @@ private Map createFieldTypes(RollupJobConfig job) { ScriptCompiler.NONE, false, false, - Version.CURRENT, + IndexVersion.CURRENT, null ).build(MapperBuilderContext.root(false)).fieldType(); fieldTypes.put(ft.name(), ft); @@ -751,7 +751,7 @@ private Map createFieldTypes(RollupJobConfig job) { if (job.getGroupConfig().getTerms() != null) { for (String field : job.getGroupConfig().getTerms().getFields()) { - MappedFieldType ft = new KeywordFieldMapper.Builder(field, Version.CURRENT).build(MapperBuilderContext.root(false)) + MappedFieldType ft = new KeywordFieldMapper.Builder(field, IndexVersion.CURRENT).build(MapperBuilderContext.root(false)) .fieldType(); fieldTypes.put(ft.name(), ft); } @@ -765,7 +765,7 @@ private Map createFieldTypes(RollupJobConfig job) { ScriptCompiler.NONE, false, false, - Version.CURRENT, + IndexVersion.CURRENT, null ).build(MapperBuilderContext.root(false)).fieldType(); fieldTypes.put(ft.name(), ft); diff --git a/x-pack/plugin/spatial/src/main/java/org/elasticsearch/xpack/spatial/index/mapper/GeoShapeWithDocValuesFieldMapper.java b/x-pack/plugin/spatial/src/main/java/org/elasticsearch/xpack/spatial/index/mapper/GeoShapeWithDocValuesFieldMapper.java index b140ac663c37e..1cba21a526552 100644 --- a/x-pack/plugin/spatial/src/main/java/org/elasticsearch/xpack/spatial/index/mapper/GeoShapeWithDocValuesFieldMapper.java +++ b/x-pack/plugin/spatial/src/main/java/org/elasticsearch/xpack/spatial/index/mapper/GeoShapeWithDocValuesFieldMapper.java @@ -14,7 +14,6 @@ import org.apache.lucene.search.IndexOrDocValuesQuery; import org.apache.lucene.search.Query; import org.apache.lucene.util.BytesRef; -import org.elasticsearch.Version; import org.elasticsearch.common.Explicit; import org.elasticsearch.common.geo.GeoBoundingBox; import org.elasticsearch.common.geo.GeoFormatterFactory; @@ -28,6 +27,7 @@ import org.elasticsearch.geometry.Geometry; import org.elasticsearch.geometry.utils.GeometryValidator; import org.elasticsearch.geometry.utils.WellKnownBinary; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.fielddata.FieldDataContext; import org.elasticsearch.index.fielddata.IndexFieldData; import org.elasticsearch.index.fielddata.ScriptDocValues; @@ -113,12 +113,12 @@ public static class Builder extends FieldMapper.Builder { final Parameter> meta = Parameter.metaParam(); - private final Version version; + private final IndexVersion version; private final GeoFormatterFactory geoFormatterFactory; public Builder( String name, - Version version, + IndexVersion version, boolean ignoreMalformedByDefault, boolean coerceByDefault, GeoFormatterFactory geoFormatterFactory @@ -128,7 +128,7 @@ public Builder( this.geoFormatterFactory = geoFormatterFactory; this.ignoreMalformed = ignoreMalformedParam(m -> builder(m).ignoreMalformed.get(), ignoreMalformedByDefault); this.coerce = coerceParam(m -> builder(m).coerce.get(), coerceByDefault); - this.hasDocValues = Parameter.docValuesParam(m -> builder(m).hasDocValues.get(), Version.V_7_8_0.onOrBefore(version)); + this.hasDocValues = Parameter.docValuesParam(m -> builder(m).hasDocValues.get(), IndexVersion.V_7_8_0.onOrBefore(version)); } // for testing @@ -217,7 +217,7 @@ public String typeName() { public Query geoShapeQuery(SearchExecutionContext context, String fieldName, ShapeRelation relation, LatLonGeometry... geometries) { failIfNotIndexedNorDocValuesFallback(context); // CONTAINS queries are not supported by VECTOR strategy for indices created before version 7.5.0 (Lucene 8.3.0) - if (relation == ShapeRelation.CONTAINS && context.indexVersionCreated().before(Version.V_7_5_0)) { + if (relation == ShapeRelation.CONTAINS && context.indexVersionCreated().before(IndexVersion.V_7_5_0)) { throw new QueryShardException( context, ShapeRelation.CONTAINS + " query relation not supported for Field [" + fieldName + "]." @@ -282,7 +282,7 @@ public Mapper.Builder parse(String name, Map node, MappingParser boolean ignoreMalformedByDefault = IGNORE_MALFORMED_SETTING.get(parserContext.getSettings()); boolean coerceByDefault = COERCE_SETTING.get(parserContext.getSettings()); if (LegacyGeoShapeFieldMapper.containsDeprecatedParameter(node.keySet())) { - if (parserContext.indexVersionCreated().onOrAfter(Version.V_8_0_0)) { + if (parserContext.indexVersionCreated().onOrAfter(IndexVersion.V_8_0_0)) { Set deprecatedParams = LegacyGeoShapeFieldMapper.getDeprecatedParameters(node.keySet()); throw new IllegalArgumentException( "using deprecated parameters " diff --git a/x-pack/plugin/spatial/src/main/java/org/elasticsearch/xpack/spatial/index/mapper/ShapeFieldMapper.java b/x-pack/plugin/spatial/src/main/java/org/elasticsearch/xpack/spatial/index/mapper/ShapeFieldMapper.java index 8760d2e2b5652..1b784595caa16 100644 --- a/x-pack/plugin/spatial/src/main/java/org/elasticsearch/xpack/spatial/index/mapper/ShapeFieldMapper.java +++ b/x-pack/plugin/spatial/src/main/java/org/elasticsearch/xpack/spatial/index/mapper/ShapeFieldMapper.java @@ -9,7 +9,6 @@ import org.apache.lucene.document.XYShape; import org.apache.lucene.index.IndexableField; import org.apache.lucene.search.Query; -import org.elasticsearch.Version; import org.elasticsearch.common.Explicit; import org.elasticsearch.common.geo.GeometryFormatterFactory; import org.elasticsearch.common.geo.GeometryParser; @@ -18,6 +17,7 @@ import org.elasticsearch.common.logging.DeprecationCategory; import org.elasticsearch.common.logging.DeprecationLogger; import org.elasticsearch.geometry.Geometry; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.fielddata.FieldDataContext; import org.elasticsearch.index.fielddata.IndexFieldData; import org.elasticsearch.index.fielddata.ScriptDocValues; @@ -78,7 +78,7 @@ public static class Builder extends FieldMapper.Builder { final Parameter indexed = Parameter.indexParam(m -> builder(m).indexed.get(), true); final Parameter hasDocValues; - private final Version version; + private final IndexVersion version; final Parameter> ignoreMalformed; final Parameter> ignoreZValue = ignoreZValueParam(m -> builder(m).ignoreZValue.get()); final Parameter> coerce; @@ -86,12 +86,12 @@ public static class Builder extends FieldMapper.Builder { final Parameter> meta = Parameter.metaParam(); - public Builder(String name, Version version, boolean ignoreMalformedByDefault, boolean coerceByDefault) { + public Builder(String name, IndexVersion version, boolean ignoreMalformedByDefault, boolean coerceByDefault) { super(name); this.version = version; this.ignoreMalformed = ignoreMalformedParam(m -> builder(m).ignoreMalformed.get(), ignoreMalformedByDefault); this.coerce = coerceParam(m -> builder(m).coerce.get(), coerceByDefault); - this.hasDocValues = Parameter.docValuesParam(m -> builder(m).hasDocValues.get(), Version.V_8_4_0.onOrBefore(version)); + this.hasDocValues = Parameter.docValuesParam(m -> builder(m).hasDocValues.get(), IndexVersion.V_8_4_0.onOrBefore(version)); } @Override diff --git a/x-pack/plugin/spatial/src/main/java/org/elasticsearch/xpack/spatial/index/query/ShapeQueryProcessor.java b/x-pack/plugin/spatial/src/main/java/org/elasticsearch/xpack/spatial/index/query/ShapeQueryProcessor.java index 1601c050a1c3a..7b28a57759c3d 100644 --- a/x-pack/plugin/spatial/src/main/java/org/elasticsearch/xpack/spatial/index/query/ShapeQueryProcessor.java +++ b/x-pack/plugin/spatial/src/main/java/org/elasticsearch/xpack/spatial/index/query/ShapeQueryProcessor.java @@ -11,7 +11,6 @@ import org.apache.lucene.search.IndexOrDocValuesQuery; import org.apache.lucene.search.MatchNoDocsQuery; import org.apache.lucene.search.Query; -import org.elasticsearch.Version; import org.elasticsearch.common.geo.ShapeRelation; import org.elasticsearch.geometry.Circle; import org.elasticsearch.geometry.Geometry; @@ -25,6 +24,7 @@ import org.elasticsearch.geometry.Point; import org.elasticsearch.geometry.Polygon; import org.elasticsearch.geometry.Rectangle; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.mapper.MappedFieldType; import org.elasticsearch.index.query.QueryShardException; import org.elasticsearch.index.query.SearchExecutionContext; @@ -46,7 +46,7 @@ public Query shapeQuery( ) { validateIsShapeFieldType(fieldName, context); // CONTAINS queries are not supported by VECTOR strategy for indices created before version 7.5.0 (Lucene 8.3.0); - if (relation == ShapeRelation.CONTAINS && context.indexVersionCreated().before(Version.V_7_5_0)) { + if (relation == ShapeRelation.CONTAINS && context.indexVersionCreated().before(IndexVersion.V_7_5_0)) { throw new QueryShardException(context, ShapeRelation.CONTAINS + " query relation not supported for Field [" + fieldName + "]."); } if (shape == null) { diff --git a/x-pack/plugin/spatial/src/test/java/org/elasticsearch/xpack/spatial/index/mapper/GeoShapeWithDocValuesFieldMapperTests.java b/x-pack/plugin/spatial/src/test/java/org/elasticsearch/xpack/spatial/index/mapper/GeoShapeWithDocValuesFieldMapperTests.java index 76538ca1c4f9e..e54db8539fd88 100644 --- a/x-pack/plugin/spatial/src/test/java/org/elasticsearch/xpack/spatial/index/mapper/GeoShapeWithDocValuesFieldMapperTests.java +++ b/x-pack/plugin/spatial/src/test/java/org/elasticsearch/xpack/spatial/index/mapper/GeoShapeWithDocValuesFieldMapperTests.java @@ -10,6 +10,7 @@ import org.elasticsearch.Version; import org.elasticsearch.common.Strings; import org.elasticsearch.common.geo.Orientation; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.mapper.AbstractGeometryFieldMapper; import org.elasticsearch.index.mapper.AbstractShapeGeometryFieldMapper; import org.elasticsearch.index.mapper.AbstractShapeGeometryFieldMapper.AbstractShapeGeometryFieldType; @@ -22,6 +23,7 @@ import org.elasticsearch.index.mapper.ParsedDocument; import org.elasticsearch.index.mapper.SourceToParse; import org.elasticsearch.test.VersionUtils; +import org.elasticsearch.test.index.IndexVersionUtils; import org.elasticsearch.xcontent.ToXContent; import org.junit.AssumptionViolatedException; @@ -85,7 +87,7 @@ public void testDefaultConfiguration() throws IOException { } public void testDefaultDocValueConfigurationOnPre7_8() throws IOException { - Version oldVersion = VersionUtils.randomVersionBetween(random(), Version.V_7_0_0, Version.V_7_7_0); + IndexVersion oldVersion = IndexVersionUtils.randomVersionBetween(random(), IndexVersion.V_7_0_0, IndexVersion.V_7_7_0); DocumentMapper defaultMapper = createDocumentMapper(oldVersion, fieldMapping(this::minimalMapping)); Mapper fieldMapper = defaultMapper.mappers().getMapper(FIELD_NAME); assertThat(fieldMapper, instanceOf(fieldMapperClass())); @@ -272,7 +274,7 @@ public void testShapeMapperMerge() throws Exception { public void testInvalidCurrentVersion() { MapperParsingException e = expectThrows( MapperParsingException.class, - () -> super.createMapperService(Version.CURRENT, fieldMapping((b) -> { + () -> super.createMapperService(IndexVersion.CURRENT, fieldMapping((b) -> { b.field("type", getFieldName()).field("strategy", "recursive"); })) ); @@ -283,7 +285,7 @@ public void testInvalidCurrentVersion() { } public void testGeoShapeLegacyMerge() throws Exception { - Version version = VersionUtils.randomPreviousCompatibleVersion(random(), Version.V_8_0_0); + IndexVersion version = VersionUtils.randomPreviousCompatibleVersion(random(), Version.V_8_0_0).indexVersion; MapperService m = createMapperService(version, fieldMapping(b -> b.field("type", getFieldName()))); Exception e = expectThrows( IllegalArgumentException.class, diff --git a/x-pack/plugin/spatial/src/test/java/org/elasticsearch/xpack/spatial/index/mapper/GeoShapeWithDocValuesFieldTypeTests.java b/x-pack/plugin/spatial/src/test/java/org/elasticsearch/xpack/spatial/index/mapper/GeoShapeWithDocValuesFieldTypeTests.java index 7e68d67e5a5e4..340b166aa2eab 100644 --- a/x-pack/plugin/spatial/src/test/java/org/elasticsearch/xpack/spatial/index/mapper/GeoShapeWithDocValuesFieldTypeTests.java +++ b/x-pack/plugin/spatial/src/test/java/org/elasticsearch/xpack/spatial/index/mapper/GeoShapeWithDocValuesFieldTypeTests.java @@ -8,7 +8,6 @@ package org.elasticsearch.xpack.spatial.index.mapper; import org.apache.lucene.util.BytesRef; -import org.elasticsearch.Version; import org.elasticsearch.common.geo.GeoFormatterFactory; import org.elasticsearch.common.geo.GeometryNormalizer; import org.elasticsearch.common.geo.Orientation; @@ -20,6 +19,7 @@ import org.elasticsearch.geometry.utils.StandardValidator; import org.elasticsearch.geometry.utils.WellKnownBinary; import org.elasticsearch.geometry.utils.WellKnownText; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.mapper.FieldTypeTestCase; import org.elasticsearch.index.mapper.MappedFieldType; import org.elasticsearch.index.mapper.MapperBuilderContext; @@ -40,7 +40,7 @@ public void testFetchSourceValue() throws IOException { ); final MappedFieldType mapper = new GeoShapeWithDocValuesFieldMapper.Builder( "field", - Version.CURRENT, + IndexVersion.CURRENT, false, false, geoFormatterFactory @@ -101,7 +101,7 @@ public void testFetchStoredValue() throws IOException { final MappedFieldType mapper = new GeoShapeWithDocValuesFieldMapper.Builder( "field", - Version.CURRENT, + IndexVersion.CURRENT, false, false, geoFormatterFactory @@ -145,7 +145,7 @@ private void fetchVectorTile(Geometry geometry) throws IOException { ); final MappedFieldType mapper = new GeoShapeWithDocValuesFieldMapper.Builder( "field", - Version.CURRENT, + IndexVersion.CURRENT, false, false, geoFormatterFactory @@ -257,7 +257,7 @@ private void assertFetchSourceGeometry(Object sourceValue, String wktValue, Map< ); final MappedFieldType mapper = new GeoShapeWithDocValuesFieldMapper.Builder( "field", - Version.CURRENT, + IndexVersion.CURRENT, false, false, geoFormatterFactory @@ -273,7 +273,7 @@ private void assertFetchStoredGeometry(String wktValue, Map json ); final MappedFieldType mapper = new GeoShapeWithDocValuesFieldMapper.Builder( "field", - Version.CURRENT, + IndexVersion.CURRENT, false, false, geoFormatterFactory @@ -293,7 +293,7 @@ private void assertFetchSourceMVT(Object sourceValue, String mvtEquivalentAsWKT) ); final MappedFieldType mapper = new GeoShapeWithDocValuesFieldMapper.Builder( "field", - Version.CURRENT, + IndexVersion.CURRENT, false, false, geoFormatterFactory diff --git a/x-pack/plugin/spatial/src/test/java/org/elasticsearch/xpack/spatial/index/mapper/ShapeFieldMapperTests.java b/x-pack/plugin/spatial/src/test/java/org/elasticsearch/xpack/spatial/index/mapper/ShapeFieldMapperTests.java index 746668dc26efc..5554ff7152b82 100644 --- a/x-pack/plugin/spatial/src/test/java/org/elasticsearch/xpack/spatial/index/mapper/ShapeFieldMapperTests.java +++ b/x-pack/plugin/spatial/src/test/java/org/elasticsearch/xpack/spatial/index/mapper/ShapeFieldMapperTests.java @@ -8,9 +8,9 @@ import org.apache.lucene.document.ShapeField; import org.apache.lucene.index.IndexableField; -import org.elasticsearch.Version; import org.elasticsearch.common.Strings; import org.elasticsearch.common.geo.Orientation; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.mapper.AbstractGeometryFieldMapper; import org.elasticsearch.index.mapper.AbstractShapeGeometryFieldMapper; import org.elasticsearch.index.mapper.AbstractShapeGeometryFieldMapper.AbstractShapeGeometryFieldType; @@ -21,7 +21,7 @@ import org.elasticsearch.index.mapper.MapperService; import org.elasticsearch.index.mapper.ParsedDocument; import org.elasticsearch.index.mapper.SourceToParse; -import org.elasticsearch.test.VersionUtils; +import org.elasticsearch.test.index.IndexVersionUtils; import org.elasticsearch.xcontent.ToXContent; import org.junit.AssumptionViolatedException; @@ -107,7 +107,7 @@ public void testDefaultConfiguration() throws IOException { public void testDefaultDocValueConfigurationOnPre8_4() throws IOException { // TODO verify which version this test is actually valid for (when PR is actually merged) - Version oldVersion = VersionUtils.randomVersionBetween(random(), Version.V_7_0_0, Version.V_8_3_0); + IndexVersion oldVersion = IndexVersionUtils.randomVersionBetween(random(), IndexVersion.V_7_0_0, IndexVersion.V_8_3_0); DocumentMapper defaultMapper = createDocumentMapper(oldVersion, fieldMapping(this::minimalMapping)); Mapper fieldMapper = defaultMapper.mappers().getMapper(FIELD_NAME); assertThat(fieldMapper, instanceOf(fieldMapperClass())); diff --git a/x-pack/plugin/spatial/src/test/java/org/elasticsearch/xpack/spatial/index/mapper/ShapeFieldTypeTests.java b/x-pack/plugin/spatial/src/test/java/org/elasticsearch/xpack/spatial/index/mapper/ShapeFieldTypeTests.java index 1d2a6d2a004ce..fd84019e79cae 100644 --- a/x-pack/plugin/spatial/src/test/java/org/elasticsearch/xpack/spatial/index/mapper/ShapeFieldTypeTests.java +++ b/x-pack/plugin/spatial/src/test/java/org/elasticsearch/xpack/spatial/index/mapper/ShapeFieldTypeTests.java @@ -15,7 +15,7 @@ import java.util.List; import java.util.Map; -import static org.elasticsearch.Version.CURRENT; +import static org.elasticsearch.index.IndexVersion.CURRENT; public class ShapeFieldTypeTests extends FieldTypeTestCase { diff --git a/x-pack/plugin/spatial/src/test/java/org/elasticsearch/xpack/spatial/index/query/GeoShapeQueryBuilderGeoShapeTests.java b/x-pack/plugin/spatial/src/test/java/org/elasticsearch/xpack/spatial/index/query/GeoShapeQueryBuilderGeoShapeTests.java index 596e0d9c730c8..173ddced0817c 100644 --- a/x-pack/plugin/spatial/src/test/java/org/elasticsearch/xpack/spatial/index/query/GeoShapeQueryBuilderGeoShapeTests.java +++ b/x-pack/plugin/spatial/src/test/java/org/elasticsearch/xpack/spatial/index/query/GeoShapeQueryBuilderGeoShapeTests.java @@ -6,7 +6,6 @@ */ package org.elasticsearch.xpack.spatial.index.query; -import org.elasticsearch.Version; import org.elasticsearch.action.admin.indices.mapping.put.PutMappingRequest; import org.elasticsearch.common.Strings; import org.elasticsearch.common.compress.CompressedXContent; @@ -14,6 +13,7 @@ import org.elasticsearch.geo.GeometryTestUtils; import org.elasticsearch.geometry.Geometry; import org.elasticsearch.geometry.ShapeType; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.mapper.MapperService; import org.elasticsearch.index.query.GeoShapeQueryBuilder; import org.elasticsearch.index.query.SearchExecutionContext; @@ -88,7 +88,7 @@ protected GeoShapeQueryBuilder doCreateTestQueryBuilder(boolean indexedShape) { } if (ESTestCase.randomBoolean()) { SearchExecutionContext context = AbstractBuilderTestCase.createSearchExecutionContext(); - if (context.indexVersionCreated().onOrAfter(Version.V_7_5_0)) { // CONTAINS is only supported from version 7.5 + if (context.indexVersionCreated().onOrAfter(IndexVersion.V_7_5_0)) { // CONTAINS is only supported from version 7.5 if (shapeType == ShapeType.LINESTRING || shapeType == ShapeType.MULTILINESTRING) { builder.relation(ESTestCase.randomFrom(ShapeRelation.DISJOINT, ShapeRelation.INTERSECTS, ShapeRelation.CONTAINS)); } else { diff --git a/x-pack/plugin/spatial/src/test/java/org/elasticsearch/xpack/spatial/index/query/ShapeQueryBuilderOverShapeTests.java b/x-pack/plugin/spatial/src/test/java/org/elasticsearch/xpack/spatial/index/query/ShapeQueryBuilderOverShapeTests.java index cf0ebb1e43af2..c3fd1288318d4 100644 --- a/x-pack/plugin/spatial/src/test/java/org/elasticsearch/xpack/spatial/index/query/ShapeQueryBuilderOverShapeTests.java +++ b/x-pack/plugin/spatial/src/test/java/org/elasticsearch/xpack/spatial/index/query/ShapeQueryBuilderOverShapeTests.java @@ -6,13 +6,13 @@ */ package org.elasticsearch.xpack.spatial.index.query; -import org.elasticsearch.Version; import org.elasticsearch.action.admin.indices.mapping.put.PutMappingRequest; import org.elasticsearch.common.Strings; import org.elasticsearch.common.compress.CompressedXContent; import org.elasticsearch.common.geo.ShapeRelation; import org.elasticsearch.geometry.Geometry; import org.elasticsearch.geometry.ShapeType; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.mapper.MapperService; import org.elasticsearch.index.query.SearchExecutionContext; import org.elasticsearch.xpack.spatial.util.ShapeTestUtils; @@ -33,7 +33,7 @@ protected void initializeAdditionalMappings(MapperService mapperService) throws @Override protected ShapeRelation getShapeRelation(ShapeType type) { SearchExecutionContext context = createSearchExecutionContext(); - if (context.indexVersionCreated().onOrAfter(Version.V_7_5_0)) { // CONTAINS is only supported from version 7.5 + if (context.indexVersionCreated().onOrAfter(IndexVersion.V_7_5_0)) { // CONTAINS is only supported from version 7.5 if (type == ShapeType.LINESTRING || type == ShapeType.MULTILINESTRING) { return randomFrom(ShapeRelation.DISJOINT, ShapeRelation.INTERSECTS, ShapeRelation.CONTAINS); } else { diff --git a/x-pack/plugin/spatial/src/test/java/org/elasticsearch/xpack/spatial/ingest/CircleProcessorTests.java b/x-pack/plugin/spatial/src/test/java/org/elasticsearch/xpack/spatial/ingest/CircleProcessorTests.java index 610972f11dcf6..ce44625201000 100644 --- a/x-pack/plugin/spatial/src/test/java/org/elasticsearch/xpack/spatial/ingest/CircleProcessorTests.java +++ b/x-pack/plugin/spatial/src/test/java/org/elasticsearch/xpack/spatial/ingest/CircleProcessorTests.java @@ -13,7 +13,6 @@ import org.apache.lucene.search.Query; import org.apache.lucene.store.Directory; import org.apache.lucene.tests.index.RandomIndexWriter; -import org.elasticsearch.Version; import org.elasticsearch.common.bytes.BytesReference; import org.elasticsearch.common.geo.GeoJson; import org.elasticsearch.common.geo.Orientation; @@ -26,6 +25,7 @@ import org.elasticsearch.geometry.Polygon; import org.elasticsearch.geometry.utils.CircleUtils; import org.elasticsearch.geometry.utils.WellKnownText; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.mapper.GeoShapeIndexer; import org.elasticsearch.index.mapper.MappedFieldType; import org.elasticsearch.index.query.SearchExecutionContext; @@ -212,7 +212,7 @@ public void testGeoShapeQueryAcrossDateline() throws IOException { SearchExecutionContext mockedContext = mock(SearchExecutionContext.class); when(mockedContext.getFieldType(any())).thenReturn(shapeType); - when(mockedContext.indexVersionCreated()).thenReturn(Version.CURRENT); + when(mockedContext.indexVersionCreated()).thenReturn(IndexVersion.CURRENT); Query sameShapeQuery = shapeType.geoShapeQuery(mockedContext, fieldName, ShapeRelation.INTERSECTS, geometry); Query pointOnDatelineQuery = shapeType.geoShapeQuery( mockedContext, diff --git a/x-pack/plugin/wildcard/src/main/java/org/elasticsearch/xpack/wildcard/mapper/WildcardFieldMapper.java b/x-pack/plugin/wildcard/src/main/java/org/elasticsearch/xpack/wildcard/mapper/WildcardFieldMapper.java index 40fc19f2f960d..2e2abe4ce8c84 100644 --- a/x-pack/plugin/wildcard/src/main/java/org/elasticsearch/xpack/wildcard/mapper/WildcardFieldMapper.java +++ b/x-pack/plugin/wildcard/src/main/java/org/elasticsearch/xpack/wildcard/mapper/WildcardFieldMapper.java @@ -42,7 +42,6 @@ import org.apache.lucene.util.automaton.MinimizationOperations; import org.apache.lucene.util.automaton.Operations; import org.elasticsearch.ElasticsearchParseException; -import org.elasticsearch.Version; import org.elasticsearch.common.geo.ShapeRelation; import org.elasticsearch.common.io.stream.ByteArrayStreamInput; import org.elasticsearch.common.lucene.BytesRefs; @@ -52,6 +51,7 @@ import org.elasticsearch.common.time.DateMathParser; import org.elasticsearch.common.unit.Fuzziness; import org.elasticsearch.core.Nullable; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.analysis.AnalyzerScope; import org.elasticsearch.index.analysis.LowercaseNormalizer; import org.elasticsearch.index.analysis.NamedAnalyzer; @@ -212,9 +212,9 @@ public static class Builder extends FieldMapper.Builder { final Parameter> meta = Parameter.metaParam(); - final Version indexVersionCreated; + final IndexVersion indexVersionCreated; - public Builder(String name, Version indexVersionCreated) { + public Builder(String name, IndexVersion indexVersionCreated) { super(name); this.indexVersionCreated = indexVersionCreated; } @@ -263,9 +263,9 @@ public static final class WildcardFieldType extends MappedFieldType { private final int ignoreAbove; private final NamedAnalyzer analyzer; - private WildcardFieldType(String name, String nullValue, int ignoreAbove, Version version, Map meta) { + private WildcardFieldType(String name, String nullValue, int ignoreAbove, IndexVersion version, Map meta) { super(name, true, false, true, Defaults.TEXT_SEARCH_INFO, meta); - if (version.onOrAfter(Version.V_7_10_0)) { + if (version.onOrAfter(IndexVersion.V_7_10_0)) { this.analyzer = WILDCARD_ANALYZER_7_10; } else { this.analyzer = WILDCARD_ANALYZER_7_9; @@ -882,7 +882,7 @@ protected String parseSourceValue(Object value) { private final int ignoreAbove; private final String nullValue; private final FieldType ngramFieldType; - private final Version indexVersionCreated; + private final IndexVersion indexVersionCreated; private final boolean storeIgnored; private WildcardFieldMapper( @@ -893,7 +893,7 @@ private WildcardFieldMapper( MultiFields multiFields, CopyTo copyTo, String nullValue, - Version indexVersionCreated + IndexVersion indexVersionCreated ) { super(simpleName, mappedFieldType, multiFields, copyTo); this.nullValue = nullValue; diff --git a/x-pack/plugin/wildcard/src/test/java/org/elasticsearch/xpack/wildcard/mapper/WildcardFieldAggregationTests.java b/x-pack/plugin/wildcard/src/test/java/org/elasticsearch/xpack/wildcard/mapper/WildcardFieldAggregationTests.java index 98190c638344b..fe23bd28768ed 100644 --- a/x-pack/plugin/wildcard/src/test/java/org/elasticsearch/xpack/wildcard/mapper/WildcardFieldAggregationTests.java +++ b/x-pack/plugin/wildcard/src/test/java/org/elasticsearch/xpack/wildcard/mapper/WildcardFieldAggregationTests.java @@ -10,7 +10,7 @@ import org.apache.lucene.document.Document; import org.apache.lucene.index.IndexableField; import org.apache.lucene.tests.index.RandomIndexWriter; -import org.elasticsearch.Version; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.mapper.LuceneDocument; import org.elasticsearch.index.mapper.MapperBuilderContext; import org.elasticsearch.search.aggregations.AggregatorTestCase; @@ -37,7 +37,7 @@ public class WildcardFieldAggregationTests extends AggregatorTestCase { @Before public void setup() { - WildcardFieldMapper.Builder builder = new WildcardFieldMapper.Builder(WILDCARD_FIELD_NAME, Version.CURRENT); + WildcardFieldMapper.Builder builder = new WildcardFieldMapper.Builder(WILDCARD_FIELD_NAME, IndexVersion.CURRENT); builder.ignoreAbove(MAX_FIELD_LENGTH); wildcardFieldMapper = builder.build(MapperBuilderContext.root(false)); diff --git a/x-pack/plugin/wildcard/src/test/java/org/elasticsearch/xpack/wildcard/mapper/WildcardFieldMapperTests.java b/x-pack/plugin/wildcard/src/test/java/org/elasticsearch/xpack/wildcard/mapper/WildcardFieldMapperTests.java index b9133ff3bce73..59ceae84ac3e1 100644 --- a/x-pack/plugin/wildcard/src/test/java/org/elasticsearch/xpack/wildcard/mapper/WildcardFieldMapperTests.java +++ b/x-pack/plugin/wildcard/src/test/java/org/elasticsearch/xpack/wildcard/mapper/WildcardFieldMapperTests.java @@ -50,6 +50,7 @@ import org.elasticsearch.core.Tuple; import org.elasticsearch.index.Index; import org.elasticsearch.index.IndexSettings; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.cache.bitset.BitsetFilterCache; import org.elasticsearch.index.fielddata.FieldDataContext; import org.elasticsearch.index.fielddata.IndexFieldData; @@ -90,7 +91,7 @@ public class WildcardFieldMapperTests extends MapperTestCase { - static SearchExecutionContext createMockSearchExecutionContext(boolean allowExpensiveQueries, Version version) { + static SearchExecutionContext createMockSearchExecutionContext(boolean allowExpensiveQueries, IndexVersion version) { SearchExecutionContext searchExecutionContext = mock(SearchExecutionContext.class); when(searchExecutionContext.allowExpensiveQueries()).thenReturn(allowExpensiveQueries); when(searchExecutionContext.indexVersionCreated()).thenReturn(version); @@ -99,7 +100,7 @@ static SearchExecutionContext createMockSearchExecutionContext(boolean allowExpe private static final String KEYWORD_FIELD_NAME = "keyword_field"; private static final String WILDCARD_FIELD_NAME = "wildcard_field"; - public static final SearchExecutionContext MOCK_CONTEXT = createMockSearchExecutionContext(true, Version.CURRENT); + public static final SearchExecutionContext MOCK_CONTEXT = createMockSearchExecutionContext(true, IndexVersion.CURRENT); static final int MAX_FIELD_LENGTH = 30; static WildcardFieldMapper wildcardFieldType; @@ -121,16 +122,16 @@ protected boolean supportsStoredFields() { @Override @Before public void setUp() throws Exception { - Builder builder = new WildcardFieldMapper.Builder(WILDCARD_FIELD_NAME, Version.CURRENT); + Builder builder = new WildcardFieldMapper.Builder(WILDCARD_FIELD_NAME, IndexVersion.CURRENT); builder.ignoreAbove(MAX_FIELD_LENGTH); wildcardFieldType = builder.build(MapperBuilderContext.root(false)); - Builder builder79 = new WildcardFieldMapper.Builder(WILDCARD_FIELD_NAME, Version.V_7_9_0); + Builder builder79 = new WildcardFieldMapper.Builder(WILDCARD_FIELD_NAME, IndexVersion.V_7_9_0); wildcardFieldType79 = builder79.build(MapperBuilderContext.root(false)); org.elasticsearch.index.mapper.KeywordFieldMapper.Builder kwBuilder = new KeywordFieldMapper.Builder( KEYWORD_FIELD_NAME, - Version.CURRENT + IndexVersion.CURRENT ); keywordFieldType = kwBuilder.build(MapperBuilderContext.root(false)); diff --git a/x-pack/plugin/wildcard/src/test/java/org/elasticsearch/xpack/wildcard/mapper/WildcardFieldTypeTests.java b/x-pack/plugin/wildcard/src/test/java/org/elasticsearch/xpack/wildcard/mapper/WildcardFieldTypeTests.java index 694ffab208330..8c5d6371b6c93 100644 --- a/x-pack/plugin/wildcard/src/test/java/org/elasticsearch/xpack/wildcard/mapper/WildcardFieldTypeTests.java +++ b/x-pack/plugin/wildcard/src/test/java/org/elasticsearch/xpack/wildcard/mapper/WildcardFieldTypeTests.java @@ -7,7 +7,7 @@ package org.elasticsearch.xpack.wildcard.mapper; -import org.elasticsearch.Version; +import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.mapper.FieldTypeTestCase; import org.elasticsearch.index.mapper.MappedFieldType; import org.elasticsearch.index.mapper.MapperBuilderContext; @@ -18,20 +18,20 @@ public class WildcardFieldTypeTests extends FieldTypeTestCase { public void testFetchSourceValue() throws IOException { - MappedFieldType mapper = new WildcardFieldMapper.Builder("field", Version.CURRENT).build(MapperBuilderContext.root(false)) + MappedFieldType mapper = new WildcardFieldMapper.Builder("field", IndexVersion.CURRENT).build(MapperBuilderContext.root(false)) .fieldType(); assertEquals(List.of("value"), fetchSourceValue(mapper, "value")); assertEquals(List.of("42"), fetchSourceValue(mapper, 42L)); assertEquals(List.of("true"), fetchSourceValue(mapper, true)); - MappedFieldType ignoreAboveMapper = new WildcardFieldMapper.Builder("field", Version.CURRENT).ignoreAbove(4) + MappedFieldType ignoreAboveMapper = new WildcardFieldMapper.Builder("field", IndexVersion.CURRENT).ignoreAbove(4) .build(MapperBuilderContext.root(false)) .fieldType(); assertEquals(List.of(), fetchSourceValue(ignoreAboveMapper, "value")); assertEquals(List.of("42"), fetchSourceValue(ignoreAboveMapper, 42L)); assertEquals(List.of("true"), fetchSourceValue(ignoreAboveMapper, true)); - MappedFieldType nullValueMapper = new WildcardFieldMapper.Builder("field", Version.CURRENT).nullValue("NULL") + MappedFieldType nullValueMapper = new WildcardFieldMapper.Builder("field", IndexVersion.CURRENT).nullValue("NULL") .build(MapperBuilderContext.root(false)) .fieldType(); assertEquals(List.of("NULL"), fetchSourceValue(nullValueMapper, null));