@@ -217,7 +217,7 @@ private void compareIndexMetadata(
217217 Map <String , Object > oldIndexMetadata = oldIndicesMetadata .get (oldIndexName );
218218 Map <String , Object > upgradedIndexMetadata = upgradedIndexEntry .getValue ();
219219 compareSettings (oldIndexMetadata , upgradedIndexMetadata );
220- assertThat ( "Mappings did not match" , upgradedIndexMetadata .get ("mappings" ), equalTo ( oldIndexMetadata .get ("mappings" ) ));
220+ compareMappings (( Map <?, ?>) oldIndexMetadata .get ("mappings" ), ( Map <?, ?>) upgradedIndexMetadata .get ("mappings" ));
221221 assertThat ("ILM states did not match" , upgradedIndexMetadata .get ("ilm" ), equalTo (oldIndexMetadata .get ("ilm" )));
222222 if (oldIndexName .equals (oldWriteIndex ) == false ) { // the old write index will have been rolled over by upgrade
223223 assertThat (
@@ -268,6 +268,21 @@ private void compareSettings(Map<String, Object> oldIndexMetadata, Map<String, O
268268 }
269269 }
270270
271+ private void compareMappings (Map <?, ?> oldMappings , Map <?, ?> upgradedMappings ) {
272+ boolean ignoreSource = Version .fromString (UPGRADE_FROM_VERSION ).before (Version .V_9_0_0 );
273+ if (ignoreSource ) {
274+ Map <?, ?> doc = (Map <?, ?>) oldMappings .get ("_doc" );
275+ if (doc != null ) {
276+ Map <?, ?> sourceEntry = (Map <?, ?>) doc .get ("_source" );
277+ if (sourceEntry != null && sourceEntry .isEmpty ()) {
278+ doc .remove ("_source" );
279+ }
280+ assert doc .containsKey ("_source" ) == false ;
281+ }
282+ }
283+ assertThat ("Mappings did not match" , upgradedMappings , equalTo (oldMappings ));
284+ }
285+
271286 @ SuppressWarnings ("unchecked" )
272287 private Map <String , Object > getIndexSettingsFromIndexMetadata (Map <String , Object > indexMetadata ) {
273288 return (Map <String , Object >) ((Map <String , Object >) indexMetadata .get ("settings" )).get ("index" );
0 commit comments