|  | @@ -42,7 +42,6 @@ import org.elasticsearch.index.mapper.core.TextFieldMapper;
 | 
	
		
			
				|  |  |  import org.elasticsearch.test.ESSingleNodeTestCase;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  import java.io.IOException;
 | 
	
		
			
				|  |  | -import java.util.List;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  import static java.util.Collections.emptyMap;
 | 
	
		
			
				|  |  |  import static org.elasticsearch.common.xcontent.XContentFactory.jsonBuilder;
 | 
	
	
		
			
				|  | @@ -245,7 +244,17 @@ public class DynamicMappingTests extends ESSingleNodeTestCase {
 | 
	
		
			
				|  |  |          // original mapping not modified
 | 
	
		
			
				|  |  |          assertEquals(mapping, serialize(mapper));
 | 
	
		
			
				|  |  |          // but we have an update
 | 
	
		
			
				|  |  | -        assertEquals("{\"type\":{\"properties\":{\"foo\":{\"type\":\"text\"}}}}", serialize(update));
 | 
	
		
			
				|  |  | +        assertEquals(XContentFactory.jsonBuilder().startObject().startObject("type").startObject("properties")
 | 
	
		
			
				|  |  | +                .startObject("foo")
 | 
	
		
			
				|  |  | +                    .field("type", "text")
 | 
	
		
			
				|  |  | +                    .startObject("fields")
 | 
	
		
			
				|  |  | +                        .startObject("keyword")
 | 
	
		
			
				|  |  | +                        .field("type", "keyword")
 | 
	
		
			
				|  |  | +                            .field("ignore_above", 256)
 | 
	
		
			
				|  |  | +                        .endObject()
 | 
	
		
			
				|  |  | +                    .endObject()
 | 
	
		
			
				|  |  | +                .endObject()
 | 
	
		
			
				|  |  | +                .endObject().endObject().endObject().string(), serialize(update));
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      public void testIncremental() throws Exception {
 | 
	
	
		
			
				|  | @@ -267,7 +276,14 @@ public class DynamicMappingTests extends ESSingleNodeTestCase {
 | 
	
		
			
				|  |  |          // but we have an update
 | 
	
		
			
				|  |  |          assertEquals(XContentFactory.jsonBuilder().startObject().startObject("type").startObject("properties")
 | 
	
		
			
				|  |  |                  // foo is NOT in the update
 | 
	
		
			
				|  |  | -                .startObject("bar").field("type", "text").endObject()
 | 
	
		
			
				|  |  | +                .startObject("bar").field("type", "text")
 | 
	
		
			
				|  |  | +                    .startObject("fields")
 | 
	
		
			
				|  |  | +                        .startObject("keyword")
 | 
	
		
			
				|  |  | +                            .field("type", "keyword")
 | 
	
		
			
				|  |  | +                            .field("ignore_above", 256)
 | 
	
		
			
				|  |  | +                        .endObject()
 | 
	
		
			
				|  |  | +                    .endObject()
 | 
	
		
			
				|  |  | +                .endObject()
 | 
	
		
			
				|  |  |                  .endObject().endObject().string(), serialize(update));
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -287,8 +303,22 @@ public class DynamicMappingTests extends ESSingleNodeTestCase {
 | 
	
		
			
				|  |  |          assertEquals(mapping, serialize(mapper));
 | 
	
		
			
				|  |  |          // but we have an update
 | 
	
		
			
				|  |  |          assertEquals(XContentFactory.jsonBuilder().startObject().startObject("type").startObject("properties")
 | 
	
		
			
				|  |  | -                .startObject("bar").field("type", "text").endObject()
 | 
	
		
			
				|  |  | -                .startObject("foo").field("type", "text").endObject()
 | 
	
		
			
				|  |  | +                .startObject("bar").field("type", "text")
 | 
	
		
			
				|  |  | +                    .startObject("fields")
 | 
	
		
			
				|  |  | +                        .startObject("keyword")
 | 
	
		
			
				|  |  | +                            .field("type", "keyword")
 | 
	
		
			
				|  |  | +                            .field("ignore_above", 256)
 | 
	
		
			
				|  |  | +                        .endObject()
 | 
	
		
			
				|  |  | +                    .endObject()
 | 
	
		
			
				|  |  | +                .endObject()
 | 
	
		
			
				|  |  | +                .startObject("foo").field("type", "text")
 | 
	
		
			
				|  |  | +                    .startObject("fields")
 | 
	
		
			
				|  |  | +                        .startObject("keyword")
 | 
	
		
			
				|  |  | +                            .field("type", "keyword")
 | 
	
		
			
				|  |  | +                            .field("ignore_above", 256)
 | 
	
		
			
				|  |  | +                        .endObject()
 | 
	
		
			
				|  |  | +                    .endObject()
 | 
	
		
			
				|  |  | +                .endObject()
 | 
	
		
			
				|  |  |                  .endObject().endObject().string(), serialize(update));
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -308,7 +338,9 @@ public class DynamicMappingTests extends ESSingleNodeTestCase {
 | 
	
		
			
				|  |  |          assertEquals(mapping, serialize(mapper));
 | 
	
		
			
				|  |  |          // but we have an update
 | 
	
		
			
				|  |  |          assertEquals(XContentFactory.jsonBuilder().startObject().startObject("type").startObject("properties")
 | 
	
		
			
				|  |  | -                .startObject("foo").startObject("properties").startObject("bar").startObject("properties").startObject("baz").field("type", "text").endObject().endObject().endObject().endObject().endObject()
 | 
	
		
			
				|  |  | +                .startObject("foo").startObject("properties").startObject("bar").startObject("properties").startObject("baz").field("type", "text")
 | 
	
		
			
				|  |  | +                .startObject("fields").startObject("keyword").field("type", "keyword").field("ignore_above", 256).endObject()
 | 
	
		
			
				|  |  | +                .endObject().endObject().endObject().endObject().endObject().endObject()
 | 
	
		
			
				|  |  |                  .endObject().endObject().endObject().string(), serialize(update));
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -328,7 +360,15 @@ public class DynamicMappingTests extends ESSingleNodeTestCase {
 | 
	
		
			
				|  |  |          assertEquals(mapping, serialize(mapper));
 | 
	
		
			
				|  |  |          // but we have an update
 | 
	
		
			
				|  |  |          assertEquals(XContentFactory.jsonBuilder().startObject().startObject("type").startObject("properties")
 | 
	
		
			
				|  |  | -                .startObject("foo").field("type", "text").endObject()
 | 
	
		
			
				|  |  | +                .startObject("foo")
 | 
	
		
			
				|  |  | +                    .field("type", "text")
 | 
	
		
			
				|  |  | +                    .startObject("fields")
 | 
	
		
			
				|  |  | +                        .startObject("keyword")
 | 
	
		
			
				|  |  | +                        .field("type", "keyword")
 | 
	
		
			
				|  |  | +                            .field("ignore_above", 256)
 | 
	
		
			
				|  |  | +                        .endObject()
 | 
	
		
			
				|  |  | +                    .endObject()
 | 
	
		
			
				|  |  | +                .endObject()
 | 
	
		
			
				|  |  |                  .endObject().endObject().endObject().string(), serialize(update));
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -348,7 +388,9 @@ public class DynamicMappingTests extends ESSingleNodeTestCase {
 | 
	
		
			
				|  |  |          assertEquals(mapping, serialize(mapper));
 | 
	
		
			
				|  |  |          // but we have an update
 | 
	
		
			
				|  |  |          assertEquals(XContentFactory.jsonBuilder().startObject().startObject("type").startObject("properties")
 | 
	
		
			
				|  |  | -                .startObject("foo").startObject("properties").startObject("bar").startObject("properties").startObject("baz").field("type", "text").endObject().endObject().endObject().endObject().endObject()
 | 
	
		
			
				|  |  | +                .startObject("foo").startObject("properties").startObject("bar").startObject("properties").startObject("baz").field("type", "text").startObject("fields")
 | 
	
		
			
				|  |  | +                .startObject("keyword").field("type", "keyword").field("ignore_above", 256).endObject()
 | 
	
		
			
				|  |  | +                .endObject().endObject().endObject().endObject().endObject().endObject()
 | 
	
		
			
				|  |  |                  .endObject().endObject().endObject().string(), serialize(update));
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -369,7 +411,14 @@ public class DynamicMappingTests extends ESSingleNodeTestCase {
 | 
	
		
			
				|  |  |          assertEquals(mapping, serialize(mapper));
 | 
	
		
			
				|  |  |          assertEquals(XContentFactory.jsonBuilder().startObject().startObject("type").startObject("properties")
 | 
	
		
			
				|  |  |                  .startObject("foo").startObject("properties")
 | 
	
		
			
				|  |  | -                .startObject("bar").field("type", "text").endObject()
 | 
	
		
			
				|  |  | +                .startObject("bar").field("type", "text")
 | 
	
		
			
				|  |  | +                    .startObject("fields")
 | 
	
		
			
				|  |  | +                        .startObject("keyword")
 | 
	
		
			
				|  |  | +                            .field("type", "keyword")
 | 
	
		
			
				|  |  | +                            .field("ignore_above", 256)
 | 
	
		
			
				|  |  | +                        .endObject()
 | 
	
		
			
				|  |  | +                    .endObject()
 | 
	
		
			
				|  |  | +                .endObject()
 | 
	
		
			
				|  |  |                  .startObject("baz").field("type", "long").endObject()
 | 
	
		
			
				|  |  |                  .endObject().endObject()
 | 
	
		
			
				|  |  |                  .endObject().endObject().endObject().string(), serialize(update));
 |