@@ -79,13 +79,13 @@ static XContentBuilder buildMapping(Class clazz, String indexType, String idFiel
79
79
// Properties
80
80
XContentBuilder xContentBuilder = mapping .startObject (FIELD_PROPERTIES );
81
81
82
- mapEntity (xContentBuilder , clazz , true , idFieldName , EMPTY , false , FieldType .Auto );
82
+ mapEntity (xContentBuilder , clazz , true , idFieldName , EMPTY , false , FieldType .Auto , null );
83
83
84
84
return xContentBuilder .endObject ().endObject ().endObject ();
85
85
}
86
86
87
87
private static void mapEntity (XContentBuilder xContentBuilder , Class clazz , boolean isRootObject , String idFieldName ,
88
- String nestedObjectFieldName , boolean nestedOrObjectField , FieldType fieldType ) throws IOException {
88
+ String nestedObjectFieldName , boolean nestedOrObjectField , FieldType fieldType , Field fieldAnnotation ) throws IOException {
89
89
90
90
java .lang .reflect .Field [] fields = retrieveFields (clazz );
91
91
@@ -94,7 +94,12 @@ private static void mapEntity(XContentBuilder xContentBuilder, Class clazz, bool
94
94
if (nestedOrObjectField ) {
95
95
type = fieldType .toString ().toLowerCase ();
96
96
}
97
- xContentBuilder .startObject (nestedObjectFieldName ).field (FIELD_TYPE , type ).startObject (FIELD_PROPERTIES );
97
+ XContentBuilder t = xContentBuilder .startObject (nestedObjectFieldName ).field (FIELD_TYPE , type );
98
+
99
+ if (nestedOrObjectField && FieldType .Nested == fieldType && fieldAnnotation .includeInParent ()) {
100
+ t .field ("include_in_parent" , fieldAnnotation .includeInParent ());
101
+ }
102
+ t .startObject (FIELD_PROPERTIES );
98
103
}
99
104
100
105
for (java .lang .reflect .Field field : fields ) {
@@ -112,7 +117,7 @@ private static void mapEntity(XContentBuilder xContentBuilder, Class clazz, bool
112
117
continue ;
113
118
}
114
119
boolean nestedOrObject = isNestedOrObjectField (field );
115
- mapEntity (xContentBuilder , getFieldType (field ), false , EMPTY , field .getName (), nestedOrObject , singleField .type ());
120
+ mapEntity (xContentBuilder , getFieldType (field ), false , EMPTY , field .getName (), nestedOrObject , singleField .type (), field . getAnnotation ( Field . class ) );
116
121
if (nestedOrObject ) {
117
122
continue ;
118
123
}
0 commit comments