@@ -37,17 +37,18 @@ public IIndexSettingsResponse GetIndexSettings(string index)
3737 var settingsObject = o . First . First . First . First ;
3838
3939 var settingsContainer = new JObject ( ) ;
40+ // In indexsettings response all analyzers etc are delivered as settings so need to split up the settings key and make proper json
4041 foreach ( JProperty s in settingsObject . Children < JProperty > ( ) )
4142 {
4243 var name = StripIndex . Replace ( s . Name , "" ) ;
4344 if ( name . StartsWith ( "analysis" ) )
4445 {
4546 var key = name . Split ( '.' ) ;
46- WriteJObject ( settingsContainer , key , s . Value ) ;
47+ RewriteIndexSettingsResponseToIndexSettingsJSon ( settingsContainer , key , s . Value ) ;
4748 }
4849 else
4950 {
50- WriteJObject ( settingsContainer , new [ ] { name } , s . Value ) ;
51+ RewriteIndexSettingsResponseToIndexSettingsJSon ( settingsContainer , new [ ] { name } , s . Value ) ;
5152 }
5253 }
5354
@@ -59,45 +60,6 @@ public IIndexSettingsResponse GetIndexSettings(string index)
5960 return response ;
6061 }
6162
62- private JToken WriteJObject ( JContainer container , string [ ] key , JToken value )
63- {
64- var thisKey = key . First ( ) ;
65- int indexer ;
66- if ( key . Length > 2 || ( key . Length == 2 && ! int . TryParse ( key . Last ( ) , out indexer ) ) )
67- {
68- var property = ( JContainer ) ( ( JObject ) container ) . GetValue ( thisKey ) ;
69- if ( property == null )
70- {
71- property = new JObject ( ) ;
72- ( ( JObject ) container ) . Add ( thisKey , property ) ;
73- }
74- var innerValue = WriteJObject ( property , key . Skip ( 1 ) . ToArray ( ) , value ) ;
75-
76- //property.Add(new JValue(innerValue));
77- //return property;
78- return property ;
79- }
80-
81- if ( key . Length == 2 && int . TryParse ( key . Last ( ) , out indexer ) )
82- {
83- var property = ( ( JObject ) container ) . Property ( thisKey ) ;
84- if ( property == null )
85- {
86- property = new JProperty ( thisKey , new JArray ( ) ) ;
87- container . Add ( property ) ;
88- }
89- var jArray = ( JArray ) property . Value ;
90- jArray . Add ( value ) ;
91- return property ;
92- }
93-
94- {
95- var property = new JProperty ( thisKey , value ) ;
96- container . Add ( property ) ;
97- return property ;
98- }
99- }
100-
10163 /// <summary>
10264 /// Update the index settings for the default index
10365 /// </summary>
@@ -152,5 +114,44 @@ public IIndicesResponse DeleteIndex(string index)
152114 return r ;
153115 }
154116
117+ /// <summary>
118+ /// Rewrites the index settings response to index settings json.
119+ /// </summary>
120+ /// <param name="container">The container.</param>
121+ /// <param name="key">The key.</param>
122+ /// <param name="value">The value.</param>
123+ private void RewriteIndexSettingsResponseToIndexSettingsJSon ( JContainer container , string [ ] key , JToken value )
124+ {
125+ var thisKey = key . First ( ) ;
126+ int indexer ;
127+
128+ if ( key . Length > 2 || ( key . Length == 2 && ! int . TryParse ( key . Last ( ) , out indexer ) ) )
129+ {
130+ var property = ( JContainer ) ( ( JObject ) container ) . GetValue ( thisKey ) ;
131+ if ( property == null )
132+ {
133+ property = new JObject ( ) ;
134+ ( ( JObject ) container ) . Add ( thisKey , property ) ;
135+ }
136+ RewriteIndexSettingsResponseToIndexSettingsJSon ( property , key . Skip ( 1 ) . ToArray ( ) , value ) ;
137+ }
138+ else if ( key . Length == 2 && int . TryParse ( key . Last ( ) , out indexer ) )
139+ {
140+ var property = ( ( JObject ) container ) . Property ( thisKey ) ;
141+ if ( property == null )
142+ {
143+ property = new JProperty ( thisKey , new JArray ( ) ) ;
144+ container . Add ( property ) ;
145+ }
146+ var jArray = ( JArray ) property . Value ;
147+ jArray . Add ( value ) ;
148+ }
149+ else
150+ {
151+ var property = new JProperty ( thisKey , value ) ;
152+ container . Add ( property ) ;
153+ }
154+ }
155+
155156 }
156157}
0 commit comments