1515import org .elasticsearch .cluster .metadata .IndexMetadata ;
1616import org .elasticsearch .common .settings .Setting ;
1717import org .elasticsearch .common .settings .Settings ;
18+ import org .elasticsearch .index .IndexVersion ;
1819import org .elasticsearch .index .IndexVersions ;
1920import org .elasticsearch .index .query .SearchExecutionContext ;
2021
@@ -41,6 +42,10 @@ public abstract class InferenceMetadataFieldsMapper extends MetadataFieldMapper
4142 Setting .Property .InternalIndex
4243 );
4344
45+ // Check index version SOURCE_MAPPER_MODE_ATTRIBUTE_NOOP because that index version was added in the same serverless promotion
46+ // where the new format was enabled by default
47+ public static final IndexVersion USE_NEW_SEMANTIC_TEXT_FORMAT_BY_DEFAULT = IndexVersions .SOURCE_MAPPER_MODE_ATTRIBUTE_NOOP ;
48+
4449 public static final String NAME = "_inference_fields" ;
4550 public static final String CONTENT_TYPE = "_inference_fields" ;
4651
@@ -86,10 +91,12 @@ public abstract ValueFetcher valueFetcher(
8691 */
8792 public static boolean isEnabled (Settings settings ) {
8893 var version = IndexMetadata .SETTING_INDEX_VERSION_CREATED .get (settings );
89- if (version .before (IndexVersions .INFERENCE_METADATA_FIELDS )
90- && version .between (IndexVersions .INFERENCE_METADATA_FIELDS_BACKPORT , IndexVersions .UPGRADE_TO_LUCENE_10_0_0 ) == false ) {
94+ if ((version .before (IndexVersions .INFERENCE_METADATA_FIELDS )
95+ && version .between (IndexVersions .INFERENCE_METADATA_FIELDS_BACKPORT , IndexVersions .UPGRADE_TO_LUCENE_10_0_0 ) == false )
96+ || (version .before (USE_NEW_SEMANTIC_TEXT_FORMAT_BY_DEFAULT ) && USE_LEGACY_SEMANTIC_TEXT_FORMAT .exists (settings ) == false )) {
9197 return false ;
9298 }
99+
93100 return USE_LEGACY_SEMANTIC_TEXT_FORMAT .get (settings ) == false ;
94101 }
95102
0 commit comments