@@ -403,57 +403,6 @@ public void testInvalidTaskTypes() {
403403        }
404404    }
405405
406-     @ Override 
407-     protected  IndexVersion  boostNotAllowedIndexVersion () {
408-         return  IndexVersions .NEW_SPARSE_VECTOR ;
409-     }
410- 
411-     public  void  testOldIndexSemanticTextDenseVectorRaisesError () throws  IOException  {
412-         final  String  fieldName  = "field" ;
413-         final  XContentBuilder  fieldMapping  = fieldMapping (b  -> {
414-             b .field ("type" , "semantic_text" );
415-             b .field (INFERENCE_ID_FIELD , "test_inference_id" );
416-             b .startObject ("model_settings" );
417-             b .field ("task_type" , "text_embedding" );
418-             b .field ("dimensions" , 384 );
419-             b .field ("similarity" , "cosine" );
420-             b .field ("element_type" , "float" );
421-             b .endObject ();
422-         });
423-         assertOldIndexUnsupported (fieldMapping );
424-     }
425- 
426-     public  void  testOldIndexSemanticTextMinimalMappingRaisesError () throws  IOException  {
427-         final  XContentBuilder  fieldMapping  = fieldMapping (this ::minimalMapping );
428-         assertOldIndexUnsupported (fieldMapping );
429-     }
430- 
431-     public  void  testOldIndexSemanticTextSparseVersionRaisesError () throws  IOException  {
432-         final  XContentBuilder  fieldMapping  = fieldMapping (b  -> {
433-             b .field ("type" , "semantic_text" );
434-             b .field ("inference_id" , "another_inference_id" );
435-             b .startObject ("model_settings" );
436-             b .field ("task_type" , "sparse_embedding" );
437-             b .endObject ();
438-         });
439-         assertOldIndexUnsupported (fieldMapping );
440-     }
441- 
442-     private  void  assertOldIndexUnsupported (XContentBuilder  fieldMapping ) {
443- 
444-         MapperParsingException  exception  = assertThrows (
445-             MapperParsingException .class ,
446-             () -> createMapperService (
447-                 fieldMapping ,
448-                 true ,
449-                 IndexVersions .V_8_0_0 ,
450-                 IndexVersionUtils .getPreviousVersion (IndexVersions .NEW_SPARSE_VECTOR )
451-             )
452-         );
453-         assertTrue (exception .getMessage ().contains (UNSUPPORTED_INDEX_MESSAGE ));
454-         assertTrue (exception .getRootCause () instanceof  UnsupportedOperationException );
455-     }
456- 
457406    public  void  testMultiFieldsSupport () throws  IOException  {
458407        if  (useLegacyFormat ) {
459408            Exception  e  = expectThrows (MapperParsingException .class , () -> createMapperService (fieldMapping (b  -> {
@@ -1134,6 +1083,99 @@ public void testModelSettingsRequiredWithChunks() throws IOException {
11341083        assertThat (ex .getMessage (), containsString ("[model_settings] must be set for field [field] when chunks are provided" ));
11351084    }
11361085
1086+     public  void  testPre811IndexSemanticTextDenseVectorRaisesError () throws  IOException  {
1087+         Model  model  = TestModel .createRandomInstance (TaskType .TEXT_EMBEDDING );
1088+         String  fieldName  = randomAlphaOfLength (8 );
1089+ 
1090+         MapperService  mapperService  = createMapperService (
1091+             mapping (
1092+                 b  -> b .startObject (fieldName ).field ("type" , "semantic_text" ).field ("inference_id" , model .getInferenceEntityId ()).endObject ()
1093+             ),
1094+             true ,
1095+             IndexVersions .V_8_0_0 ,
1096+             IndexVersionUtils .getPreviousVersion (IndexVersions .NEW_SPARSE_VECTOR )
1097+         );
1098+         assertSemanticTextField (mapperService , fieldName , false , null , null );
1099+ 
1100+         merge (
1101+             mapperService ,
1102+             mapping (
1103+                 b  -> b .startObject (fieldName )
1104+                     .field ("type" , "semantic_text" )
1105+                     .field ("inference_id" , model .getInferenceEntityId ())
1106+                     .startObject ("model_settings" )
1107+                     .field ("task_type" , TaskType .TEXT_EMBEDDING .toString ())
1108+                     .field ("dimensions" , model .getServiceSettings ().dimensions ())
1109+                     .field ("similarity" , model .getServiceSettings ().similarity ())
1110+                     .field ("element_type" , model .getServiceSettings ().elementType ())
1111+                     .endObject ()
1112+                     .endObject ()
1113+             )
1114+         );
1115+         assertSemanticTextField (mapperService , fieldName , true , null , null );
1116+ 
1117+         DocumentMapper  documentMapper  = mapperService .documentMapper ();
1118+         DocumentParsingException  e  = assertThrows (
1119+             DocumentParsingException .class ,
1120+             () -> documentMapper .parse (
1121+                 source (
1122+                     b  -> addSemanticTextInferenceResults (
1123+                         true ,
1124+                         b ,
1125+                         List .of (randomSemanticText (true , fieldName , model , null , List .of ("foo" , "bar" ), XContentType .JSON ))
1126+                     )
1127+                 )
1128+             )
1129+         );
1130+         assertThat (e .getCause (), instanceOf (UnsupportedOperationException .class ));
1131+         assertThat (e .getCause ().getMessage (), equalTo (UNSUPPORTED_INDEX_MESSAGE ));
1132+     }
1133+ 
1134+     public  void  testPre811IndexSemanticTextSparseVectorRaisesError () throws  IOException  {
1135+         Model  model  = TestModel .createRandomInstance (TaskType .SPARSE_EMBEDDING );
1136+         String  fieldName  = randomAlphaOfLength (8 );
1137+ 
1138+         MapperService  mapperService  = createMapperService (
1139+             mapping (
1140+                 b  -> b .startObject (fieldName ).field ("type" , "semantic_text" ).field ("inference_id" , model .getInferenceEntityId ()).endObject ()
1141+             ),
1142+             true ,
1143+             IndexVersions .V_8_0_0 ,
1144+             IndexVersionUtils .getPreviousVersion (IndexVersions .NEW_SPARSE_VECTOR )
1145+         );
1146+         assertSemanticTextField (mapperService , fieldName , false , null , null );
1147+ 
1148+         merge (
1149+             mapperService ,
1150+             mapping (
1151+                 b  -> b .startObject (fieldName )
1152+                     .field ("type" , "semantic_text" )
1153+                     .field ("inference_id" , model .getInferenceEntityId ())
1154+                     .startObject ("model_settings" )
1155+                     .field ("task_type" , TaskType .SPARSE_EMBEDDING .toString ())
1156+                     .endObject ()
1157+                     .endObject ()
1158+             )
1159+         );
1160+         assertSemanticTextField (mapperService , fieldName , true , null , null );
1161+ 
1162+         DocumentMapper  documentMapper  = mapperService .documentMapper ();
1163+         DocumentParsingException  e  = assertThrows (
1164+             DocumentParsingException .class ,
1165+             () -> documentMapper .parse (
1166+                 source (
1167+                     b  -> addSemanticTextInferenceResults (
1168+                         true ,
1169+                         b ,
1170+                         List .of (randomSemanticText (true , fieldName , model , null , List .of ("foo" , "bar" ), XContentType .JSON ))
1171+                     )
1172+                 )
1173+             )
1174+         );
1175+         assertThat (e .getCause (), instanceOf (UnsupportedOperationException .class ));
1176+         assertThat (e .getCause ().getMessage (), equalTo (UNSUPPORTED_INDEX_MESSAGE ));
1177+     }
1178+ 
11371179    private  MapperService  mapperServiceForFieldWithModelSettings (String  fieldName , String  inferenceId , MinimalServiceSettings  modelSettings )
11381180        throws  IOException  {
11391181        return  mapperServiceForFieldWithModelSettings (fieldName , inferenceId , null , modelSettings );
0 commit comments