@@ -582,7 +582,15 @@ public void testNormalizerSyntheticSourceKeepOriginalValue() throws IOException
582582 b -> b .field ("type" , "keyword" ).field ("normalizer" , "lowercase" ).field ("normalizer_skip_store_original_value" , false )
583583 )
584584 );
585+ var keywordMapper = mapper .mappingLookup ().getMapper ("field" );
586+ assertThat (keywordMapper , Matchers .instanceOf (KeywordFieldMapper .class ));
587+ assertFalse (((KeywordFieldMapper ) keywordMapper ).isNormalizerSkipStoreOriginalValue ());
588+
585589 assertEquals ("{\" field\" :\" AbC\" }" , syntheticSource (mapper .documentMapper (), b -> b .field ("field" , "AbC" )));
590+
591+ String expected = """
592+ {"field":{"type":"keyword","normalizer":"lowercase","normalizer_skip_store_original_value":false}}""" ;
593+ assertThat (keywordMapper .toString (), equalTo (expected ));
586594 }
587595
588596 public void testNormalizerSyntheticSourceSkipStoreOriginalValue () throws IOException {
@@ -591,7 +599,17 @@ public void testNormalizerSyntheticSourceSkipStoreOriginalValue() throws IOExcep
591599 b -> b .field ("type" , "keyword" ).field ("normalizer" , "lowercase" ).field ("normalizer_skip_store_original_value" , true )
592600 )
593601 );
602+ var keywordMapper = mapper .mappingLookup ().getMapper ("field" );
603+ assertThat (keywordMapper , Matchers .instanceOf (KeywordFieldMapper .class ));
604+ assertTrue (((KeywordFieldMapper ) keywordMapper ).isNormalizerSkipStoreOriginalValue ());
605+
594606 assertEquals ("{\" field\" :\" abc\" }" , syntheticSource (mapper .documentMapper (), b -> b .field ("field" , "AbC" )));
607+
608+ // normalizer_skip_store_original_value is configured, but it is the same as the default value, and therefor it isn't serialized
609+ // (See default serializerCheck in Parameter.java)
610+ String expected = """
611+ {"field":{"type":"keyword","normalizer":"lowercase"}}""" ;
612+ assertThat (keywordMapper .toString (), equalTo (expected ));
595613 }
596614
597615 public void testSkipStoreOriginalValueForLowercaseNormalizer () throws IOException {
@@ -604,6 +622,9 @@ public void testSkipStoreOriginalValueForLowercaseNormalizer() throws IOExceptio
604622 assertTrue (((KeywordFieldMapper ) keywordMapper ).isNormalizerSkipStoreOriginalValue ());
605623
606624 assertEquals ("{\" field\" :\" abc\" }" , syntheticSource (mapper .documentMapper (), b -> b .field ("field" , "AbC" )));
625+ String expected = """
626+ {"field":{"type":"keyword","normalizer":"lowercase"}}""" ;
627+ assertThat (keywordMapper .toString (), equalTo (expected ));
607628 }
608629
609630 public void testSkipStoreOriginalValueForCustomNormalizer () throws IOException {
@@ -616,6 +637,26 @@ public void testSkipStoreOriginalValueForCustomNormalizer() throws IOException {
616637 assertFalse (((KeywordFieldMapper ) keywordMapper ).isNormalizerSkipStoreOriginalValue ());
617638
618639 assertEquals ("{\" field\" :\" AbC\" }" , syntheticSource (mapper .documentMapper (), b -> b .field ("field" , "AbC" )));
640+ String expected = """
641+ {"field":{"type":"keyword","normalizer":"other_lowercase"}}""" ;
642+ assertThat (keywordMapper .toString (), equalTo (expected ));
643+ }
644+
645+ public void testSkipStoreOriginalValueForCustomNormalizerOverwriteSkipStoreOriginalValue () throws IOException {
646+ MapperService mapper = createSytheticSourceMapperService (
647+ fieldMapping (
648+ b -> b .field ("type" , "keyword" ).field ("normalizer" , "other_lowercase" ).field ("normalizer_skip_store_original_value" , true )
649+ )
650+ );
651+
652+ var keywordMapper = mapper .mappingLookup ().getMapper ("field" );
653+ assertThat (keywordMapper , Matchers .instanceOf (KeywordFieldMapper .class ));
654+ assertTrue (((KeywordFieldMapper ) keywordMapper ).isNormalizerSkipStoreOriginalValue ());
655+
656+ assertEquals ("{\" field\" :\" abc\" }" , syntheticSource (mapper .documentMapper (), b -> b .field ("field" , "AbC" )));
657+ String expected = """
658+ {"field":{"type":"keyword","normalizer":"other_lowercase","normalizer_skip_store_original_value":true}}""" ;
659+ assertThat (keywordMapper .toString (), equalTo (expected ));
619660 }
620661
621662 public void testParsesKeywordNestedEmptyObjectStrict () throws IOException {
0 commit comments