From 460aa1d63264ca6924a13f071b698efeecb16359 Mon Sep 17 00:00:00 2001 From: Alan Woodward Date: Mon, 29 Sep 2025 12:40:53 +0100 Subject: [PATCH 1/3] Simplify TextSearchInfo handling in MappedFieldType The vast majority of field types use TextSearchInfo.NONE, and most of the rest extend TermBasedFieldType. Rather than forcing all field types to include TextSearchInfo as part of a constructor call, we instead have a default method on the base class, a constructor parameter for TermBasedFieldType, and method overrides for the few field types left over. --- .../mapper/extras/RankFeatureFieldMapper.java | 3 +-- .../mapper/extras/RankFeatureMetaFieldMapper.java | 3 +-- .../mapper/extras/RankFeaturesFieldMapper.java | 3 +-- .../mapper/extras/ScaledFloatFieldMapper.java | 7 ++++++- .../percolator/PercolatorFieldMapper.java | 3 +-- .../index/mapper/murmur3/Murmur3FieldMapper.java | 3 +-- server/src/main/java/module-info.java | 1 + .../index/mapper/AbstractGeometryFieldMapper.java | 2 +- .../index/mapper/AbstractScriptFieldType.java | 7 ++++++- .../index/mapper/BinaryFieldMapper.java | 2 +- .../index/mapper/ConstantFieldType.java | 7 ++++++- .../mapper/DataStreamTimestampFieldMapper.java | 2 +- .../index/mapper/DateFieldMapper.java | 7 ++++++- .../index/mapper/DocCountFieldMapper.java | 2 +- .../elasticsearch/index/mapper/DocumentParser.java | 2 +- .../mapper/InferenceMetadataFieldsMapper.java | 2 +- .../elasticsearch/index/mapper/IpFieldMapper.java | 7 ++++++- .../index/mapper/LookupRuntimeFieldType.java | 2 +- .../index/mapper/MappedFieldType.java | 14 ++------------ .../index/mapper/NumberFieldMapper.java | 7 ++++++- .../index/mapper/PlaceHolderFieldMapper.java | 2 +- .../index/mapper/RangeFieldMapper.java | 9 +++++++-- .../index/mapper/SeqNoFieldMapper.java | 7 ++++++- .../index/mapper/SimpleMappedFieldType.java | 11 ++--------- .../index/mapper/SourceFieldMapper.java | 2 +- .../index/mapper/TermBasedFieldType.java | 10 +++++++++- .../index/mapper/TimeSeriesIdFieldMapper.java | 2 +- .../mapper/TimeSeriesRoutingHashFieldMapper.java | 2 +- .../index/mapper/VersionFieldMapper.java | 2 +- .../mapper/vectors/DenseVectorFieldMapper.java | 3 +-- .../mapper/vectors/SparseVectorFieldMapper.java | 7 ++++++- .../index/IndexSortSettingsTests.java | 3 +-- .../MappingLookupInferenceFieldMapperTests.java | 2 +- .../index/mapper/TestRuntimeField.java | 2 +- .../search/collapse/CollapseBuilderTests.java | 3 +-- .../search/slice/SliceBuilderTests.java | 10 +--------- .../index/mapper/FieldTypeTestCase.java | 2 +- .../analytics/mapper/HistogramFieldMapper.java | 3 +-- .../inference/mapper/OffsetSourceFieldMapper.java | 3 +-- .../inference/mapper/SemanticTextFieldMapper.java | 3 +-- .../mapper/AggregateMetricDoubleFieldMapper.java | 7 ++++++- .../ExponentialHistogramFieldMapper.java | 3 +-- .../unsignedlong/UnsignedLongFieldMapper.java | 7 ++++++- .../vectors/mapper/RankVectorsFieldMapper.java | 3 +-- .../xpack/wildcard/mapper/WildcardFieldMapper.java | 7 ++++++- 45 files changed, 116 insertions(+), 85 deletions(-) diff --git a/modules/mapper-extras/src/main/java/org/elasticsearch/index/mapper/extras/RankFeatureFieldMapper.java b/modules/mapper-extras/src/main/java/org/elasticsearch/index/mapper/extras/RankFeatureFieldMapper.java index 0599ea38f1f46..cecbb25e16a20 100644 --- a/modules/mapper-extras/src/main/java/org/elasticsearch/index/mapper/extras/RankFeatureFieldMapper.java +++ b/modules/mapper-extras/src/main/java/org/elasticsearch/index/mapper/extras/RankFeatureFieldMapper.java @@ -23,7 +23,6 @@ import org.elasticsearch.index.mapper.MappedFieldType; import org.elasticsearch.index.mapper.MapperBuilderContext; import org.elasticsearch.index.mapper.SourceValueFetcher; -import org.elasticsearch.index.mapper.TextSearchInfo; import org.elasticsearch.index.mapper.ValueFetcher; import org.elasticsearch.index.query.SearchExecutionContext; import org.elasticsearch.xcontent.XContentBuilder; @@ -114,7 +113,7 @@ public static final class RankFeatureFieldType extends MappedFieldType { private final Float nullValue; public RankFeatureFieldType(String name, Map meta, boolean positiveScoreImpact, Float nullValue) { - super(name, true, false, false, TextSearchInfo.NONE, meta); + super(name, true, false, false, meta); this.positiveScoreImpact = positiveScoreImpact; this.nullValue = nullValue; } diff --git a/modules/mapper-extras/src/main/java/org/elasticsearch/index/mapper/extras/RankFeatureMetaFieldMapper.java b/modules/mapper-extras/src/main/java/org/elasticsearch/index/mapper/extras/RankFeatureMetaFieldMapper.java index ed1cc57b84863..2e45d331aaf7a 100644 --- a/modules/mapper-extras/src/main/java/org/elasticsearch/index/mapper/extras/RankFeatureMetaFieldMapper.java +++ b/modules/mapper-extras/src/main/java/org/elasticsearch/index/mapper/extras/RankFeatureMetaFieldMapper.java @@ -13,7 +13,6 @@ import org.apache.lucene.search.Query; import org.elasticsearch.index.mapper.MappedFieldType; import org.elasticsearch.index.mapper.MetadataFieldMapper; -import org.elasticsearch.index.mapper.TextSearchInfo; import org.elasticsearch.index.mapper.ValueFetcher; import org.elasticsearch.index.query.SearchExecutionContext; @@ -38,7 +37,7 @@ public static final class RankFeatureMetaFieldType extends MappedFieldType { // made visible for tests RankFeatureMetaFieldType() { - super(NAME, false, false, false, TextSearchInfo.NONE, Collections.emptyMap()); + super(NAME, false, false, false, Collections.emptyMap()); } @Override diff --git a/modules/mapper-extras/src/main/java/org/elasticsearch/index/mapper/extras/RankFeaturesFieldMapper.java b/modules/mapper-extras/src/main/java/org/elasticsearch/index/mapper/extras/RankFeaturesFieldMapper.java index f51bbe33c96b7..3d297f382fdd5 100644 --- a/modules/mapper-extras/src/main/java/org/elasticsearch/index/mapper/extras/RankFeaturesFieldMapper.java +++ b/modules/mapper-extras/src/main/java/org/elasticsearch/index/mapper/extras/RankFeaturesFieldMapper.java @@ -21,7 +21,6 @@ import org.elasticsearch.index.mapper.MappedFieldType; import org.elasticsearch.index.mapper.MapperBuilderContext; import org.elasticsearch.index.mapper.SourceValueFetcher; -import org.elasticsearch.index.mapper.TextSearchInfo; import org.elasticsearch.index.mapper.ValueFetcher; import org.elasticsearch.index.query.SearchExecutionContext; import org.elasticsearch.xcontent.XContentParser.Token; @@ -80,7 +79,7 @@ public static final class RankFeaturesFieldType extends MappedFieldType { private final boolean positiveScoreImpact; public RankFeaturesFieldType(String name, Map meta, boolean positiveScoreImpact) { - super(name, true, false, false, TextSearchInfo.SIMPLE_MATCH_ONLY, meta); + super(name, true, false, false, meta); this.positiveScoreImpact = positiveScoreImpact; } diff --git a/modules/mapper-extras/src/main/java/org/elasticsearch/index/mapper/extras/ScaledFloatFieldMapper.java b/modules/mapper-extras/src/main/java/org/elasticsearch/index/mapper/extras/ScaledFloatFieldMapper.java index eb3372e9b6e85..c6f5aa84ae51c 100644 --- a/modules/mapper-extras/src/main/java/org/elasticsearch/index/mapper/extras/ScaledFloatFieldMapper.java +++ b/modules/mapper-extras/src/main/java/org/elasticsearch/index/mapper/extras/ScaledFloatFieldMapper.java @@ -284,7 +284,7 @@ public ScaledFloatFieldType( boolean coerce, boolean isSyntheticSource ) { - super(name, indexed, stored, hasDocValues, TextSearchInfo.SIMPLE_MATCH_WITHOUT_TERMS, meta); + super(name, indexed, stored, hasDocValues, meta); this.scalingFactor = scalingFactor; this.nullValue = nullValue; this.metricType = metricType; @@ -320,6 +320,11 @@ public boolean isSearchable() { return isIndexed() || hasDocValues(); } + @Override + public TextSearchInfo getTextSearchInfo() { + return TextSearchInfo.SIMPLE_MATCH_WITHOUT_TERMS; + } + @Override public Query termQuery(Object value, SearchExecutionContext context) { failIfNotIndexedNorDocValuesFallback(context); 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 d6422efdfed26..6cd5b527be493 100644 --- a/modules/percolator/src/main/java/org/elasticsearch/percolator/PercolatorFieldMapper.java +++ b/modules/percolator/src/main/java/org/elasticsearch/percolator/PercolatorFieldMapper.java @@ -55,7 +55,6 @@ import org.elasticsearch.index.mapper.RangeFieldMapper; import org.elasticsearch.index.mapper.RangeType; import org.elasticsearch.index.mapper.SourceValueFetcher; -import org.elasticsearch.index.mapper.TextSearchInfo; import org.elasticsearch.index.mapper.ValueFetcher; import org.elasticsearch.index.query.FilteredSearchExecutionContext; import org.elasticsearch.index.query.QueryBuilder; @@ -240,7 +239,7 @@ static class PercolatorFieldType extends MappedFieldType { boolean mapUnmappedFieldsAsText; private PercolatorFieldType(String name, Map meta) { - super(name, false, false, false, TextSearchInfo.NONE, meta); + super(name, false, false, false, meta); } @Override diff --git a/plugins/mapper-murmur3/src/main/java/org/elasticsearch/index/mapper/murmur3/Murmur3FieldMapper.java b/plugins/mapper-murmur3/src/main/java/org/elasticsearch/index/mapper/murmur3/Murmur3FieldMapper.java index 738fb7ab7c25e..4e202e3581e55 100644 --- a/plugins/mapper-murmur3/src/main/java/org/elasticsearch/index/mapper/murmur3/Murmur3FieldMapper.java +++ b/plugins/mapper-murmur3/src/main/java/org/elasticsearch/index/mapper/murmur3/Murmur3FieldMapper.java @@ -23,7 +23,6 @@ import org.elasticsearch.index.mapper.MappedFieldType; import org.elasticsearch.index.mapper.MapperBuilderContext; import org.elasticsearch.index.mapper.SourceValueFetcher; -import org.elasticsearch.index.mapper.TextSearchInfo; import org.elasticsearch.index.mapper.ValueFetcher; import org.elasticsearch.index.query.SearchExecutionContext; import org.elasticsearch.script.field.murmur3.Murmur3DocValueField; @@ -69,7 +68,7 @@ public Murmur3FieldMapper build(MapperBuilderContext context) { public static class Murmur3FieldType extends MappedFieldType { private Murmur3FieldType(String name, boolean isStored, Map meta) { - super(name, false, isStored, true, TextSearchInfo.NONE, meta); + super(name, false, isStored, true, meta); } @Override diff --git a/server/src/main/java/module-info.java b/server/src/main/java/module-info.java index 68dc8da3b7d15..18d82c12bb6ce 100644 --- a/server/src/main/java/module-info.java +++ b/server/src/main/java/module-info.java @@ -55,6 +55,7 @@ requires org.apache.lucene.queryparser; requires org.apache.lucene.sandbox; requires org.apache.lucene.suggest; + requires org.elasticsearch.server; exports org.elasticsearch; exports org.elasticsearch.action; diff --git a/server/src/main/java/org/elasticsearch/index/mapper/AbstractGeometryFieldMapper.java b/server/src/main/java/org/elasticsearch/index/mapper/AbstractGeometryFieldMapper.java index 4733e610a148f..90a6aa06c1bc5 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/AbstractGeometryFieldMapper.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/AbstractGeometryFieldMapper.java @@ -143,7 +143,7 @@ protected AbstractGeometryFieldType( T nullValue, Map meta ) { - super(name, indexed, stored, hasDocValues, TextSearchInfo.NONE, meta); + super(name, indexed, stored, hasDocValues, meta); this.nullValue = nullValue; this.geometryParser = geometryParser; } 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 6887a66bc02ce..9d2c8e62c7c3a 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/AbstractScriptFieldType.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/AbstractScriptFieldType.java @@ -62,7 +62,7 @@ protected AbstractScriptFieldType( Map meta, boolean isParsedFromSource ) { - super(name, false, false, false, TextSearchInfo.SIMPLE_MATCH_WITHOUT_TERMS, meta); + super(name, false, false, false, meta); this.factory = factory; this.script = Objects.requireNonNull(script); this.isResultDeterministic = isResultDeterministic; @@ -79,6 +79,11 @@ public final boolean isAggregatable() { return true; } + @Override + public TextSearchInfo getTextSearchInfo() { + return TextSearchInfo.SIMPLE_MATCH_WITHOUT_TERMS; + } + @Override public final Query rangeQuery( Object lowerTerm, diff --git a/server/src/main/java/org/elasticsearch/index/mapper/BinaryFieldMapper.java b/server/src/main/java/org/elasticsearch/index/mapper/BinaryFieldMapper.java index 2093909876567..80186b18dc7a8 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/BinaryFieldMapper.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/BinaryFieldMapper.java @@ -83,7 +83,7 @@ public BinaryFieldMapper build(MapperBuilderContext context) { public static final class BinaryFieldType extends MappedFieldType { private BinaryFieldType(String name, boolean isStored, boolean hasDocValues, Map meta) { - super(name, false, isStored, hasDocValues, TextSearchInfo.NONE, meta); + super(name, false, isStored, hasDocValues, meta); } public BinaryFieldType(String name) { diff --git a/server/src/main/java/org/elasticsearch/index/mapper/ConstantFieldType.java b/server/src/main/java/org/elasticsearch/index/mapper/ConstantFieldType.java index 0b246c2492fdb..6a1d7bd33e053 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/ConstantFieldType.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/ConstantFieldType.java @@ -38,7 +38,7 @@ public abstract class ConstantFieldType extends MappedFieldType { @SuppressWarnings("this-escape") public ConstantFieldType(String name, Map meta) { - super(name, true, false, true, TextSearchInfo.SIMPLE_MATCH_WITHOUT_TERMS, meta); + super(name, true, false, true, meta); assert isSearchable(); } @@ -47,6 +47,11 @@ public final boolean isAggregatable() { return true; } + @Override + public TextSearchInfo getTextSearchInfo() { + return TextSearchInfo.SIMPLE_MATCH_WITHOUT_TERMS; + } + /** * Return whether the constant value of this field matches the provided {@code pattern} * as documented in {@link Regex#simpleMatch}. diff --git a/server/src/main/java/org/elasticsearch/index/mapper/DataStreamTimestampFieldMapper.java b/server/src/main/java/org/elasticsearch/index/mapper/DataStreamTimestampFieldMapper.java index b85e1bc4dc5d0..fe05ba162df78 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/DataStreamTimestampFieldMapper.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/DataStreamTimestampFieldMapper.java @@ -49,7 +49,7 @@ public static final class TimestampFieldType extends MappedFieldType { static final TimestampFieldType INSTANCE = new TimestampFieldType(); private TimestampFieldType() { - super(NAME, false, false, false, TextSearchInfo.NONE, Map.of()); + super(NAME, false, false, false, Map.of()); } @Override 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 0e34261baa996..859e60e628547 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/DateFieldMapper.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/DateFieldMapper.java @@ -551,7 +551,7 @@ public DateFieldType( FieldValues scriptValues, Map meta ) { - super(name, isIndexed, isStored, hasDocValues, TextSearchInfo.SIMPLE_MATCH_WITHOUT_TERMS, meta); + super(name, isIndexed, isStored, hasDocValues, meta); this.dateTimeFormatter = dateTimeFormatter; this.dateMathParser = dateTimeFormatter.toDateMathParser(); this.resolution = resolution; @@ -665,6 +665,11 @@ public boolean hasDocValuesSkipper() { return hasDocValuesSkipper; } + @Override + public TextSearchInfo getTextSearchInfo() { + return TextSearchInfo.SIMPLE_MATCH_WITHOUT_TERMS; + } + /** * Format to use to resolve {@link Number}s from the source. Its valid * to send the numbers with up to six digits after the decimal place diff --git a/server/src/main/java/org/elasticsearch/index/mapper/DocCountFieldMapper.java b/server/src/main/java/org/elasticsearch/index/mapper/DocCountFieldMapper.java index 52828c5e430ba..d1eee2dfc6a96 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/DocCountFieldMapper.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/DocCountFieldMapper.java @@ -44,7 +44,7 @@ public static final class DocCountFieldType extends MappedFieldType { public static final int DEFAULT_VALUE = 1; public DocCountFieldType() { - super(NAME, false, false, false, TextSearchInfo.NONE, Collections.emptyMap()); + super(NAME, false, false, false, Collections.emptyMap()); } @Override diff --git a/server/src/main/java/org/elasticsearch/index/mapper/DocumentParser.java b/server/src/main/java/org/elasticsearch/index/mapper/DocumentParser.java index 4112f9108d3ee..39e944daa5f14 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/DocumentParser.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/DocumentParser.java @@ -951,7 +951,7 @@ private static Mapper getLeafMapper(final DocumentParserContext context, String private static FieldMapper noopFieldMapper(String path) { return new FieldMapper( NOOP_FIELD_MAPPER_NAME, - new MappedFieldType(NOOP_FIELD_MAPPER_NAME, false, false, false, TextSearchInfo.NONE, Collections.emptyMap()) { + new MappedFieldType(NOOP_FIELD_MAPPER_NAME, false, false, false, Collections.emptyMap()) { @Override public ValueFetcher valueFetcher(SearchExecutionContext context, String format) { throw new UnsupportedOperationException(); diff --git a/server/src/main/java/org/elasticsearch/index/mapper/InferenceMetadataFieldsMapper.java b/server/src/main/java/org/elasticsearch/index/mapper/InferenceMetadataFieldsMapper.java index 2dcd92be0952f..be6f0b8e39cec 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/InferenceMetadataFieldsMapper.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/InferenceMetadataFieldsMapper.java @@ -65,7 +65,7 @@ public InferenceMetadataFieldType fieldType() { public abstract static class InferenceMetadataFieldType extends MappedFieldType { public InferenceMetadataFieldType() { - super(NAME, false, false, false, TextSearchInfo.NONE, Map.of()); + super(NAME, false, false, false, Map.of()); } /** 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 781e4e27752a3..26588de38fe54 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/IpFieldMapper.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/IpFieldMapper.java @@ -249,7 +249,7 @@ public IpFieldType( boolean isDimension, boolean isSyntheticSource ) { - super(name, indexed, stored, hasDocValues, TextSearchInfo.SIMPLE_MATCH_WITHOUT_TERMS, meta); + super(name, indexed, stored, hasDocValues, meta); this.nullValue = nullValue; this.scriptValues = scriptValues; this.isDimension = isDimension; @@ -278,6 +278,11 @@ public boolean isSearchable() { return isIndexed() || hasDocValues(); } + @Override + public TextSearchInfo getTextSearchInfo() { + return TextSearchInfo.SIMPLE_MATCH_WITHOUT_TERMS; + } + @Override public boolean mayExistInIndex(SearchExecutionContext context) { return context.fieldExistsInIndex(name()); diff --git a/server/src/main/java/org/elasticsearch/index/mapper/LookupRuntimeFieldType.java b/server/src/main/java/org/elasticsearch/index/mapper/LookupRuntimeFieldType.java index c775f105a01c6..4c56e18f181ac 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/LookupRuntimeFieldType.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/LookupRuntimeFieldType.java @@ -181,7 +181,7 @@ private LookupRuntimeFieldType( String targetField, List fetchFields ) { - super(name, false, false, false, TextSearchInfo.NONE, meta); + super(name, false, false, false, meta); this.lookupIndex = lookupIndex; this.inputField = inputField; this.targetField = targetField; diff --git a/server/src/main/java/org/elasticsearch/index/mapper/MappedFieldType.java b/server/src/main/java/org/elasticsearch/index/mapper/MappedFieldType.java index 77a13865f8d7c..7c0718a6d14a2 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/MappedFieldType.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/MappedFieldType.java @@ -53,7 +53,6 @@ import java.util.HashSet; import java.util.List; import java.util.Map; -import java.util.Objects; import java.util.Set; import java.util.function.Function; import java.util.function.Supplier; @@ -69,22 +68,13 @@ public abstract class MappedFieldType { private final boolean docValues; private final boolean isIndexed; private final boolean isStored; - private final TextSearchInfo textSearchInfo; private final Map meta; - public MappedFieldType( - String name, - boolean isIndexed, - boolean isStored, - boolean hasDocValues, - TextSearchInfo textSearchInfo, - Map meta - ) { + public MappedFieldType(String name, boolean isIndexed, boolean isStored, boolean hasDocValues, Map meta) { this.name = Mapper.internFieldName(name); this.isIndexed = isIndexed; this.isStored = isStored; this.docValues = hasDocValues; - this.textSearchInfo = Objects.requireNonNull(textSearchInfo); // meta should be sorted but for the one item or empty case we can fall back to immutable maps to save some memory since order is // irrelevant this.meta = meta.size() <= 1 ? Map.copyOf(meta) : meta; @@ -649,7 +639,7 @@ public Map meta() { * {@link TextSearchInfo#SIMPLE_MATCH_WITHOUT_TERMS} */ public TextSearchInfo getTextSearchInfo() { - return textSearchInfo; + return TextSearchInfo.NONE; } public enum CollapseType { 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 fe3dac96541d2..89757aca89002 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/NumberFieldMapper.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/NumberFieldMapper.java @@ -1915,7 +1915,7 @@ public NumberFieldType( IndexMode indexMode, boolean isSyntheticSource ) { - super(name, isIndexed, isStored, hasDocValues, TextSearchInfo.SIMPLE_MATCH_WITHOUT_TERMS, meta); + super(name, isIndexed, isStored, hasDocValues, meta); this.type = Objects.requireNonNull(type); this.coerce = coerce; this.nullValue = nullValue; @@ -1957,6 +1957,11 @@ public String typeName() { return type.name; } + @Override + public TextSearchInfo getTextSearchInfo() { + return TextSearchInfo.SIMPLE_MATCH_WITHOUT_TERMS; + } + /** * This method reinterprets a double precision value based on the maximum precision of the stored number field. Mostly this * corrects for unrepresentable values which have different approximations when cast from floats than when parsed as doubles. diff --git a/server/src/main/java/org/elasticsearch/index/mapper/PlaceHolderFieldMapper.java b/server/src/main/java/org/elasticsearch/index/mapper/PlaceHolderFieldMapper.java index 670ddc4d5ccda..7c5dfa2be0449 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/PlaceHolderFieldMapper.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/PlaceHolderFieldMapper.java @@ -101,7 +101,7 @@ public static final class PlaceHolderFieldType extends MappedFieldType { private String type; public PlaceHolderFieldType(String name, String type, Map meta) { - super(name, false, false, false, TextSearchInfo.NONE, meta); + super(name, false, false, false, meta); this.type = type; } diff --git a/server/src/main/java/org/elasticsearch/index/mapper/RangeFieldMapper.java b/server/src/main/java/org/elasticsearch/index/mapper/RangeFieldMapper.java index e53fc3cba5d58..30c493c49b901 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/RangeFieldMapper.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/RangeFieldMapper.java @@ -193,7 +193,7 @@ public RangeFieldType( boolean coerce, Map meta ) { - super(name, indexed, stored, hasDocValues, TextSearchInfo.SIMPLE_MATCH_WITHOUT_TERMS, meta); + super(name, indexed, stored, hasDocValues, meta); assert type != RangeType.DATE; this.rangeType = Objects.requireNonNull(type); dateTimeFormatter = null; @@ -214,7 +214,7 @@ public RangeFieldType( boolean coerce, Map meta ) { - super(name, indexed, stored, hasDocValues, TextSearchInfo.SIMPLE_MATCH_WITHOUT_TERMS, meta); + super(name, indexed, stored, hasDocValues, meta); this.rangeType = RangeType.DATE; this.dateTimeFormatter = Objects.requireNonNull(formatter); this.dateMathParser = dateTimeFormatter.toDateMathParser(); @@ -250,6 +250,11 @@ public SortField sortField( }; } + @Override + public TextSearchInfo getTextSearchInfo() { + return TextSearchInfo.SIMPLE_MATCH_WITHOUT_TERMS; + } + @Override public boolean mayExistInIndex(SearchExecutionContext context) { return context.fieldExistsInIndex(this.name()); diff --git a/server/src/main/java/org/elasticsearch/index/mapper/SeqNoFieldMapper.java b/server/src/main/java/org/elasticsearch/index/mapper/SeqNoFieldMapper.java index 8dad7a14c4336..8b9cca8d416cc 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/SeqNoFieldMapper.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/SeqNoFieldMapper.java @@ -144,7 +144,7 @@ static final class SeqNoFieldType extends SimpleMappedFieldType { private static final SeqNoFieldType NO_POINT = new SeqNoFieldType(false); private SeqNoFieldType(boolean indexed) { - super(NAME, indexed, false, true, TextSearchInfo.SIMPLE_MATCH_WITHOUT_TERMS, Collections.emptyMap()); + super(NAME, indexed, false, true, Collections.emptyMap()); } @Override @@ -152,6 +152,11 @@ public String typeName() { return CONTENT_TYPE; } + @Override + public TextSearchInfo getTextSearchInfo() { + return TextSearchInfo.SIMPLE_MATCH_WITHOUT_TERMS; + } + private static long parse(Object value) { if (value instanceof Number) { double doubleValue = ((Number) value).doubleValue(); diff --git a/server/src/main/java/org/elasticsearch/index/mapper/SimpleMappedFieldType.java b/server/src/main/java/org/elasticsearch/index/mapper/SimpleMappedFieldType.java index 968204e940309..2c4ac8b440319 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/SimpleMappedFieldType.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/SimpleMappedFieldType.java @@ -22,15 +22,8 @@ */ public abstract class SimpleMappedFieldType extends MappedFieldType { - protected SimpleMappedFieldType( - String name, - boolean isIndexed, - boolean isStored, - boolean hasDocValues, - TextSearchInfo textSearchInfo, - Map meta - ) { - super(name, isIndexed, isStored, hasDocValues, textSearchInfo, meta); + protected SimpleMappedFieldType(String name, boolean isIndexed, boolean isStored, boolean hasDocValues, Map meta) { + super(name, isIndexed, isStored, hasDocValues, meta); } @Override diff --git a/server/src/main/java/org/elasticsearch/index/mapper/SourceFieldMapper.java b/server/src/main/java/org/elasticsearch/index/mapper/SourceFieldMapper.java index a4c8b0a5b50b1..deff0c7db7d11 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/SourceFieldMapper.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/SourceFieldMapper.java @@ -339,7 +339,7 @@ static final class SourceFieldType extends MappedFieldType { private final boolean enabled; private SourceFieldType(boolean enabled) { - super(NAME, false, enabled, false, TextSearchInfo.NONE, Collections.emptyMap()); + super(NAME, false, enabled, false, Collections.emptyMap()); this.enabled = enabled; } diff --git a/server/src/main/java/org/elasticsearch/index/mapper/TermBasedFieldType.java b/server/src/main/java/org/elasticsearch/index/mapper/TermBasedFieldType.java index e2ff9cc7ea632..598555ba99791 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/TermBasedFieldType.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/TermBasedFieldType.java @@ -26,6 +26,8 @@ * with the inverted index. */ public abstract class TermBasedFieldType extends SimpleMappedFieldType { + protected final TextSearchInfo textSearchInfo; + public TermBasedFieldType( String name, boolean isIndexed, @@ -34,7 +36,13 @@ public TermBasedFieldType( TextSearchInfo textSearchInfo, Map meta ) { - super(name, isIndexed, isStored, hasDocValues, textSearchInfo, meta); + super(name, isIndexed, isStored, hasDocValues, meta); + this.textSearchInfo = textSearchInfo; + } + + @Override + public TextSearchInfo getTextSearchInfo() { + return this.textSearchInfo; } /** Returns the indexed value used to construct search "values". diff --git a/server/src/main/java/org/elasticsearch/index/mapper/TimeSeriesIdFieldMapper.java b/server/src/main/java/org/elasticsearch/index/mapper/TimeSeriesIdFieldMapper.java index 288ddc116a08e..347e11e85115c 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/TimeSeriesIdFieldMapper.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/TimeSeriesIdFieldMapper.java @@ -94,7 +94,7 @@ public TimeSeriesIdFieldMapper build() { public static final class TimeSeriesIdFieldType extends MappedFieldType { private TimeSeriesIdFieldType() { - super(NAME, false, false, true, TextSearchInfo.NONE, Collections.emptyMap()); + super(NAME, false, false, true, Collections.emptyMap()); } @Override diff --git a/server/src/main/java/org/elasticsearch/index/mapper/TimeSeriesRoutingHashFieldMapper.java b/server/src/main/java/org/elasticsearch/index/mapper/TimeSeriesRoutingHashFieldMapper.java index 4a6ba5d1fa800..313a43b38a712 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/TimeSeriesRoutingHashFieldMapper.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/TimeSeriesRoutingHashFieldMapper.java @@ -77,7 +77,7 @@ public BytesRef parseBytesRef(Object value) { }; private TimeSeriesRoutingHashFieldType() { - super(NAME, false, false, true, TextSearchInfo.NONE, Collections.emptyMap()); + super(NAME, false, false, true, Collections.emptyMap()); } @Override diff --git a/server/src/main/java/org/elasticsearch/index/mapper/VersionFieldMapper.java b/server/src/main/java/org/elasticsearch/index/mapper/VersionFieldMapper.java index f84b2b1d78fed..5c1d79816aa7b 100644 --- a/server/src/main/java/org/elasticsearch/index/mapper/VersionFieldMapper.java +++ b/server/src/main/java/org/elasticsearch/index/mapper/VersionFieldMapper.java @@ -41,7 +41,7 @@ static final class VersionFieldType extends MappedFieldType { public static final VersionFieldType INSTANCE = new VersionFieldType(); private VersionFieldType() { - super(NAME, false, false, true, TextSearchInfo.NONE, Collections.emptyMap()); + super(NAME, false, false, true, Collections.emptyMap()); } @Override 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 7b8c9934f8104..f5159054a678b 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 @@ -71,7 +71,6 @@ import org.elasticsearch.index.mapper.SimpleMappedFieldType; import org.elasticsearch.index.mapper.SourceLoader; import org.elasticsearch.index.mapper.SourceValueFetcher; -import org.elasticsearch.index.mapper.TextSearchInfo; import org.elasticsearch.index.mapper.ValueFetcher; import org.elasticsearch.index.query.SearchExecutionContext; import org.elasticsearch.search.DocValueFormat; @@ -2228,7 +2227,7 @@ public DenseVectorFieldType( Map meta, boolean isSyntheticSource ) { - super(name, indexed, false, indexed == false, TextSearchInfo.NONE, meta); + super(name, indexed, false, indexed == false, meta); this.element = Element.getElement(elementType); this.dims = dims; this.indexed = indexed; 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 c922be5999119..c55bb0b901a24 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 @@ -224,7 +224,7 @@ public SparseVectorFieldType( Map meta, @Nullable SparseVectorIndexOptions indexOptions ) { - super(name, true, isStored, false, TextSearchInfo.SIMPLE_MATCH_ONLY, meta); + super(name, true, isStored, false, meta); this.indexVersionCreated = indexVersionCreated; this.indexOptions = indexOptions; } @@ -243,6 +243,11 @@ public boolean isVectorEmbedding() { return true; } + @Override + public TextSearchInfo getTextSearchInfo() { + return TextSearchInfo.SIMPLE_MATCH_ONLY; + } + @Override public IndexFieldData.Builder fielddataBuilder(FieldDataContext fieldDataContext) { throw new IllegalArgumentException("[sparse_vector] fields do not support sorting, scripting or aggregating"); diff --git a/server/src/test/java/org/elasticsearch/index/IndexSortSettingsTests.java b/server/src/test/java/org/elasticsearch/index/IndexSortSettingsTests.java index 52cc1348fd48a..478996be08e93 100644 --- a/server/src/test/java/org/elasticsearch/index/IndexSortSettingsTests.java +++ b/server/src/test/java/org/elasticsearch/index/IndexSortSettingsTests.java @@ -21,7 +21,6 @@ import org.elasticsearch.index.mapper.DateFieldMapper; import org.elasticsearch.index.mapper.KeywordFieldMapper; import org.elasticsearch.index.mapper.MappedFieldType; -import org.elasticsearch.index.mapper.TextSearchInfo; import org.elasticsearch.index.mapper.TimeSeriesIdFieldMapper; import org.elasticsearch.index.mapper.ValueFetcher; import org.elasticsearch.index.query.SearchExecutionContext; @@ -129,7 +128,7 @@ public void testInvalidMissing() { public void testIndexSortingNoDocValues() { IndexSettings indexSettings = indexSettings(Settings.builder().put("index.sort.field", "field").build()); - MappedFieldType fieldType = new MappedFieldType("field", false, false, false, TextSearchInfo.NONE, Collections.emptyMap()) { + MappedFieldType fieldType = new MappedFieldType("field", false, false, false, Collections.emptyMap()) { @Override public String typeName() { return null; diff --git a/server/src/test/java/org/elasticsearch/index/mapper/MappingLookupInferenceFieldMapperTests.java b/server/src/test/java/org/elasticsearch/index/mapper/MappingLookupInferenceFieldMapperTests.java index 93ac31c9ba582..91038d5fbd373 100644 --- a/server/src/test/java/org/elasticsearch/index/mapper/MappingLookupInferenceFieldMapperTests.java +++ b/server/src/test/java/org/elasticsearch/index/mapper/MappingLookupInferenceFieldMapperTests.java @@ -145,7 +145,7 @@ public FieldMapper build(MapperBuilderContext context) { private static class TestInferenceFieldMapperFieldType extends MappedFieldType { TestInferenceFieldMapperFieldType(String name) { - super(name, false, false, false, TextSearchInfo.NONE, Map.of()); + super(name, false, false, false, Map.of()); } @Override diff --git a/server/src/test/java/org/elasticsearch/index/mapper/TestRuntimeField.java b/server/src/test/java/org/elasticsearch/index/mapper/TestRuntimeField.java index f3e9df9c2baf6..fcccc184d7639 100644 --- a/server/src/test/java/org/elasticsearch/index/mapper/TestRuntimeField.java +++ b/server/src/test/java/org/elasticsearch/index/mapper/TestRuntimeField.java @@ -56,7 +56,7 @@ public static class TestRuntimeFieldType extends MappedFieldType { private final String type; public TestRuntimeFieldType(String name, String type) { - super(name, false, false, false, TextSearchInfo.NONE, Collections.emptyMap()); + super(name, false, false, false, Collections.emptyMap()); this.type = type; } diff --git a/server/src/test/java/org/elasticsearch/search/collapse/CollapseBuilderTests.java b/server/src/test/java/org/elasticsearch/search/collapse/CollapseBuilderTests.java index 336fae2cfec2f..78004a1186e34 100644 --- a/server/src/test/java/org/elasticsearch/search/collapse/CollapseBuilderTests.java +++ b/server/src/test/java/org/elasticsearch/search/collapse/CollapseBuilderTests.java @@ -21,7 +21,6 @@ import org.elasticsearch.index.mapper.KeywordFieldMapper; import org.elasticsearch.index.mapper.MappedFieldType; import org.elasticsearch.index.mapper.NumberFieldMapper; -import org.elasticsearch.index.mapper.TextSearchInfo; import org.elasticsearch.index.mapper.ValueFetcher; import org.elasticsearch.index.query.InnerHitBuilder; import org.elasticsearch.index.query.InnerHitBuilderTests; @@ -216,7 +215,7 @@ public void testBuildWithExceptions() { } { - MappedFieldType fieldType = new MappedFieldType("field", true, false, true, TextSearchInfo.NONE, Collections.emptyMap()) { + MappedFieldType fieldType = new MappedFieldType("field", true, false, true, Collections.emptyMap()) { @Override public String typeName() { return "some_type"; diff --git a/server/src/test/java/org/elasticsearch/search/slice/SliceBuilderTests.java b/server/src/test/java/org/elasticsearch/search/slice/SliceBuilderTests.java index 1cc8565f370f3..74eae0e633ea7 100644 --- a/server/src/test/java/org/elasticsearch/search/slice/SliceBuilderTests.java +++ b/server/src/test/java/org/elasticsearch/search/slice/SliceBuilderTests.java @@ -31,7 +31,6 @@ import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.fielddata.IndexNumericFieldData; import org.elasticsearch.index.mapper.MappedFieldType; -import org.elasticsearch.index.mapper.TextSearchInfo; import org.elasticsearch.index.mapper.ValueFetcher; import org.elasticsearch.index.query.SearchExecutionContext; import org.elasticsearch.index.shard.ShardId; @@ -134,14 +133,7 @@ private SearchExecutionContext createShardContext( String fieldName, DocValuesType dvType ) { - MappedFieldType fieldType = new MappedFieldType( - fieldName, - true, - false, - dvType != null, - TextSearchInfo.NONE, - Collections.emptyMap() - ) { + MappedFieldType fieldType = new MappedFieldType(fieldName, true, false, dvType != null, Collections.emptyMap()) { @Override public ValueFetcher valueFetcher(SearchExecutionContext context, String format) { 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 1c4cfa4ec7ff9..adb45f6fef48e 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 @@ -112,7 +112,7 @@ public void testFieldHasValueWithEmptyFieldInfos() { } public MappedFieldType getMappedFieldType() { - return new MappedFieldType("field", false, false, false, TextSearchInfo.NONE, Collections.emptyMap()) { + return new MappedFieldType("field", false, false, false, Collections.emptyMap()) { @Override public ValueFetcher valueFetcher(SearchExecutionContext context, String format) { diff --git a/x-pack/plugin/analytics/src/main/java/org/elasticsearch/xpack/analytics/mapper/HistogramFieldMapper.java b/x-pack/plugin/analytics/src/main/java/org/elasticsearch/xpack/analytics/mapper/HistogramFieldMapper.java index fcf2d572f2d14..7c3beaeb0bb78 100644 --- a/x-pack/plugin/analytics/src/main/java/org/elasticsearch/xpack/analytics/mapper/HistogramFieldMapper.java +++ b/x-pack/plugin/analytics/src/main/java/org/elasticsearch/xpack/analytics/mapper/HistogramFieldMapper.java @@ -38,7 +38,6 @@ import org.elasticsearch.index.mapper.MapperBuilderContext; import org.elasticsearch.index.mapper.SourceLoader; import org.elasticsearch.index.mapper.SourceValueFetcher; -import org.elasticsearch.index.mapper.TextSearchInfo; import org.elasticsearch.index.mapper.ValueFetcher; import org.elasticsearch.index.query.SearchExecutionContext; import org.elasticsearch.script.field.DocValuesScriptFieldFactory; @@ -141,7 +140,7 @@ protected void parseCreateField(DocumentParserContext context) { public static class HistogramFieldType extends MappedFieldType { public HistogramFieldType(String name, Map meta) { - super(name, false, false, true, TextSearchInfo.NONE, meta); + super(name, false, false, true, meta); } @Override diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/mapper/OffsetSourceFieldMapper.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/mapper/OffsetSourceFieldMapper.java index e612076f1aaf2..41dfb842df3a8 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/mapper/OffsetSourceFieldMapper.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/mapper/OffsetSourceFieldMapper.java @@ -16,7 +16,6 @@ import org.elasticsearch.index.mapper.FieldMapper; import org.elasticsearch.index.mapper.MappedFieldType; import org.elasticsearch.index.mapper.MapperBuilderContext; -import org.elasticsearch.index.mapper.TextSearchInfo; import org.elasticsearch.index.mapper.ValueFetcher; import org.elasticsearch.index.query.SearchExecutionContext; import org.elasticsearch.search.fetch.StoredFieldsSpec; @@ -133,7 +132,7 @@ public static final class OffsetSourceFieldType extends MappedFieldType { private final CharsetFormat charset; public OffsetSourceFieldType(String name, CharsetFormat charset, Map meta) { - super(name, true, false, false, TextSearchInfo.NONE, meta); + super(name, true, false, false, meta); this.charset = charset; } diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/mapper/SemanticTextFieldMapper.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/mapper/SemanticTextFieldMapper.java index b7c01ce817b32..066e1ac6ca150 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/mapper/SemanticTextFieldMapper.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/mapper/SemanticTextFieldMapper.java @@ -58,7 +58,6 @@ import org.elasticsearch.index.mapper.SourceLoader; import org.elasticsearch.index.mapper.SourceValueFetcher; import org.elasticsearch.index.mapper.TextFieldMapper; -import org.elasticsearch.index.mapper.TextSearchInfo; import org.elasticsearch.index.mapper.ValueFetcher; import org.elasticsearch.index.mapper.vectors.DenseVectorFieldMapper; import org.elasticsearch.index.mapper.vectors.SparseVectorFieldMapper; @@ -784,7 +783,7 @@ public SemanticTextFieldType( boolean useLegacyFormat, Map meta ) { - super(name, true, false, false, TextSearchInfo.NONE, meta); + super(name, true, false, false, meta); this.inferenceId = inferenceId; this.searchInferenceId = searchInferenceId; this.modelSettings = modelSettings; diff --git a/x-pack/plugin/mapper-aggregate-metric/src/main/java/org/elasticsearch/xpack/aggregatemetric/mapper/AggregateMetricDoubleFieldMapper.java b/x-pack/plugin/mapper-aggregate-metric/src/main/java/org/elasticsearch/xpack/aggregatemetric/mapper/AggregateMetricDoubleFieldMapper.java index bb891a57064bd..398ec2d4dc424 100644 --- a/x-pack/plugin/mapper-aggregate-metric/src/main/java/org/elasticsearch/xpack/aggregatemetric/mapper/AggregateMetricDoubleFieldMapper.java +++ b/x-pack/plugin/mapper-aggregate-metric/src/main/java/org/elasticsearch/xpack/aggregatemetric/mapper/AggregateMetricDoubleFieldMapper.java @@ -307,7 +307,7 @@ public AggregateMetricDoubleFieldType(String name) { } public AggregateMetricDoubleFieldType(String name, Map meta, MetricType metricType) { - super(name, true, false, true, TextSearchInfo.SIMPLE_MATCH_WITHOUT_TERMS, meta); + super(name, true, false, true, meta); this.metricType = metricType; } @@ -332,6 +332,11 @@ public String typeName() { return CONTENT_TYPE; } + @Override + public TextSearchInfo getTextSearchInfo() { + return TextSearchInfo.SIMPLE_MATCH_WITHOUT_TERMS; + } + private void setMetricFields(EnumMap metricFields) { this.metricFields = metricFields; } diff --git a/x-pack/plugin/mapper-exponential-histogram/src/main/java/org/elasticsearch/xpack/exponentialhistogram/ExponentialHistogramFieldMapper.java b/x-pack/plugin/mapper-exponential-histogram/src/main/java/org/elasticsearch/xpack/exponentialhistogram/ExponentialHistogramFieldMapper.java index 3f8ee1127c181..99102b56af62a 100644 --- a/x-pack/plugin/mapper-exponential-histogram/src/main/java/org/elasticsearch/xpack/exponentialhistogram/ExponentialHistogramFieldMapper.java +++ b/x-pack/plugin/mapper-exponential-histogram/src/main/java/org/elasticsearch/xpack/exponentialhistogram/ExponentialHistogramFieldMapper.java @@ -34,7 +34,6 @@ import org.elasticsearch.index.mapper.MapperBuilderContext; import org.elasticsearch.index.mapper.SourceLoader; import org.elasticsearch.index.mapper.SourceValueFetcher; -import org.elasticsearch.index.mapper.TextSearchInfo; import org.elasticsearch.index.mapper.ValueFetcher; import org.elasticsearch.index.query.SearchExecutionContext; import org.elasticsearch.xcontent.CopyingXContentParser; @@ -228,7 +227,7 @@ protected void parseCreateField(DocumentParserContext context) { static class ExponentialHistogramFieldType extends MappedFieldType { ExponentialHistogramFieldType(String name, Map meta) { - super(name, false, false, true, TextSearchInfo.NONE, meta); + super(name, false, false, true, meta); } @Override diff --git a/x-pack/plugin/mapper-unsigned-long/src/main/java/org/elasticsearch/xpack/unsignedlong/UnsignedLongFieldMapper.java b/x-pack/plugin/mapper-unsigned-long/src/main/java/org/elasticsearch/xpack/unsignedlong/UnsignedLongFieldMapper.java index 2962278117195..cd8c96a0a5e19 100644 --- a/x-pack/plugin/mapper-unsigned-long/src/main/java/org/elasticsearch/xpack/unsignedlong/UnsignedLongFieldMapper.java +++ b/x-pack/plugin/mapper-unsigned-long/src/main/java/org/elasticsearch/xpack/unsignedlong/UnsignedLongFieldMapper.java @@ -285,7 +285,7 @@ public UnsignedLongFieldType( IndexMode indexMode, boolean isSyntheticSource ) { - super(name, indexed, isStored, hasDocValues, TextSearchInfo.SIMPLE_MATCH_WITHOUT_TERMS, meta); + super(name, indexed, isStored, hasDocValues, meta); this.nullValueFormatted = nullValueFormatted; this.isDimension = isDimension; this.metricType = metricType; @@ -302,6 +302,11 @@ public String typeName() { return CONTENT_TYPE; } + @Override + public TextSearchInfo getTextSearchInfo() { + return TextSearchInfo.SIMPLE_MATCH_WITHOUT_TERMS; + } + @Override public boolean mayExistInIndex(SearchExecutionContext context) { return context.fieldExistsInIndex(name()); diff --git a/x-pack/plugin/rank-vectors/src/main/java/org/elasticsearch/xpack/rank/vectors/mapper/RankVectorsFieldMapper.java b/x-pack/plugin/rank-vectors/src/main/java/org/elasticsearch/xpack/rank/vectors/mapper/RankVectorsFieldMapper.java index 0fa59124bc84e..5c9c1c7d79f41 100644 --- a/x-pack/plugin/rank-vectors/src/main/java/org/elasticsearch/xpack/rank/vectors/mapper/RankVectorsFieldMapper.java +++ b/x-pack/plugin/rank-vectors/src/main/java/org/elasticsearch/xpack/rank/vectors/mapper/RankVectorsFieldMapper.java @@ -26,7 +26,6 @@ import org.elasticsearch.index.mapper.MapperParsingException; import org.elasticsearch.index.mapper.SimpleMappedFieldType; import org.elasticsearch.index.mapper.SourceLoader; -import org.elasticsearch.index.mapper.TextSearchInfo; import org.elasticsearch.index.mapper.ValueFetcher; import org.elasticsearch.index.mapper.vectors.DenseVectorFieldMapper; import org.elasticsearch.index.mapper.vectors.DenseVectorFieldMapper.Element; @@ -173,7 +172,7 @@ public RankVectorsFieldType( XPackLicenseState licenseState, Map meta ) { - super(name, false, false, true, TextSearchInfo.NONE, meta); + super(name, false, false, true, meta); this.element = Element.getElement(elementType); this.dims = dims; this.licenseState = licenseState; 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 874ea05c00e34..636f856e78f89 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 @@ -281,7 +281,7 @@ public static final class WildcardFieldType extends MappedFieldType { private final IgnoreAbove ignoreAbove; private WildcardFieldType(String name, IndexVersion version, Map meta, Builder builder) { - super(name, true, false, true, Defaults.TEXT_SEARCH_INFO, meta); + super(name, true, false, true, meta); if (version.onOrAfter(IndexVersions.V_7_10_0)) { this.analyzer = WILDCARD_ANALYZER_7_10; } else { @@ -296,6 +296,11 @@ public boolean mayExistInIndex(SearchExecutionContext context) { return context.fieldExistsInIndex(name()); } + @Override + public TextSearchInfo getTextSearchInfo() { + return Defaults.TEXT_SEARCH_INFO; + } + @Override public Query normalizedWildcardQuery(String value, MultiTermQuery.RewriteMethod method, SearchExecutionContext context) { return wildcardQuery(value, method, false, context); From 97da6c983f473ae48a6848f63b515ef836c8619b Mon Sep 17 00:00:00 2001 From: Alan Woodward Date: Mon, 29 Sep 2025 13:01:04 +0100 Subject: [PATCH 2/3] wut --- server/src/main/java/module-info.java | 1 - 1 file changed, 1 deletion(-) diff --git a/server/src/main/java/module-info.java b/server/src/main/java/module-info.java index 18d82c12bb6ce..68dc8da3b7d15 100644 --- a/server/src/main/java/module-info.java +++ b/server/src/main/java/module-info.java @@ -55,7 +55,6 @@ requires org.apache.lucene.queryparser; requires org.apache.lucene.sandbox; requires org.apache.lucene.suggest; - requires org.elasticsearch.server; exports org.elasticsearch; exports org.elasticsearch.action; From 1feae583b0ca2b3e8cf9a32304f82d6a9ae5ddbd Mon Sep 17 00:00:00 2001 From: Alan Woodward Date: Mon, 29 Sep 2025 13:25:45 +0100 Subject: [PATCH 3/3] duh --- .../index/mapper/extras/RankFeaturesFieldMapper.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/modules/mapper-extras/src/main/java/org/elasticsearch/index/mapper/extras/RankFeaturesFieldMapper.java b/modules/mapper-extras/src/main/java/org/elasticsearch/index/mapper/extras/RankFeaturesFieldMapper.java index 3d297f382fdd5..9496e05bbc161 100644 --- a/modules/mapper-extras/src/main/java/org/elasticsearch/index/mapper/extras/RankFeaturesFieldMapper.java +++ b/modules/mapper-extras/src/main/java/org/elasticsearch/index/mapper/extras/RankFeaturesFieldMapper.java @@ -21,6 +21,7 @@ import org.elasticsearch.index.mapper.MappedFieldType; import org.elasticsearch.index.mapper.MapperBuilderContext; import org.elasticsearch.index.mapper.SourceValueFetcher; +import org.elasticsearch.index.mapper.TextSearchInfo; import org.elasticsearch.index.mapper.ValueFetcher; import org.elasticsearch.index.query.SearchExecutionContext; import org.elasticsearch.xcontent.XContentParser.Token; @@ -103,6 +104,11 @@ public ValueFetcher valueFetcher(SearchExecutionContext context, String format) return SourceValueFetcher.identity(name(), context, format); } + @Override + public TextSearchInfo getTextSearchInfo() { + return TextSearchInfo.SIMPLE_MATCH_ONLY; + } + @Override public Query termQuery(Object value, SearchExecutionContext context) { return FeatureField.newLinearQuery(name(), indexedValueForSearch(value), DEFAULT_BOOST);