@@ -75,6 +75,7 @@ public override void WriteJson(JsonWriter writer, object value, JsonSerializer s
7575 d [ UpdatableIndexSettings . SlowlogIndexingSource ] = indexing ? . Source ;
7676
7777 d [ UpdatableIndexSettings . Analysis ] = ds . Analysis ;
78+ d [ UpdatableIndexSettings . Similarity ] = ds . Similarity ;
7879
7980 var indexSettings = value as IIndexSettings ;
8081
@@ -94,7 +95,17 @@ public override void WriteJson(JsonWriter writer, object value, JsonSerializer s
9495 base . WriteJson ( writer , d , serializer ) ;
9596 }
9697
97- private object AsArrayOrSingleItem < T > ( IEnumerable < T > items )
98+ public override object ReadJson ( JsonReader reader , Type objectType , object existingValue , JsonSerializer serializer )
99+ {
100+ var s = new IndexSettings ( ) ;
101+ SetKnownIndexSettings ( reader , serializer , s ) ;
102+ if ( ! typeof ( IUpdateIndexSettingsRequest ) . IsAssignableFrom ( objectType ) ) return s ;
103+
104+ var request = new UpdateIndexSettingsRequest ( ) { IndexSettings = s } ;
105+ return request ;
106+ }
107+
108+ private static object AsArrayOrSingleItem < T > ( IEnumerable < T > items )
98109 {
99110 if ( items == null || ! items . Any ( ) )
100111 return null ;
@@ -105,29 +116,21 @@ private object AsArrayOrSingleItem<T>(IEnumerable<T> items)
105116 return items ;
106117 }
107118
108- public JObject Flatten ( JObject original , string prefix = "" , JObject newObject = null )
119+ private static JObject Flatten ( JObject original , string prefix = "" , JObject newObject = null )
109120 {
110121 newObject = newObject ?? new JObject ( ) ;
111122 foreach ( var property in original . Properties ( ) )
112123 {
113- if ( property . Value is JObject && property . Name != UpdatableIndexSettings . Analysis )
124+ if ( property . Value is JObject &&
125+ property . Name != UpdatableIndexSettings . Analysis &&
126+ property . Name != UpdatableIndexSettings . Similarity )
114127 Flatten ( property . Value . Value < JObject > ( ) , prefix + property . Name + "." , newObject ) ;
115128 else newObject . Add ( prefix + property . Name , property . Value ) ;
116129 }
117130 return newObject ;
118131 }
119132
120- public override object ReadJson ( JsonReader reader , Type objectType , object existingValue , JsonSerializer serializer )
121- {
122- var s = new IndexSettings ( ) ;
123- SetKnownIndexSettings ( reader , serializer , s ) ;
124- if ( ! typeof ( IUpdateIndexSettingsRequest ) . IsAssignableFrom ( objectType ) ) return s ;
125-
126- var request = new UpdateIndexSettingsRequest ( ) { IndexSettings = s } ;
127- return request ;
128- }
129-
130- private void SetKnownIndexSettings ( JsonReader reader , JsonSerializer serializer , IIndexSettings s )
133+ private static void SetKnownIndexSettings ( JsonReader reader , JsonSerializer serializer , IIndexSettings s )
131134 {
132135 var settings = Flatten ( JObject . Load ( reader ) ) . Properties ( ) . ToDictionary ( kv => kv . Name ) ;
133136
@@ -219,6 +222,8 @@ private void SetKnownIndexSettings(JsonReader reader, JsonSerializer serializer,
219222 var setting = kv . Value ;
220223 if ( kv . Key == UpdatableIndexSettings . Analysis || kv . Key == "index.analysis" )
221224 s . Analysis = setting . Value . Value < JObject > ( ) . ToObject < Analysis > ( serializer ) ;
225+ if ( kv . Key == UpdatableIndexSettings . Similarity || kv . Key == "index.similarity" )
226+ s . Similarity = setting . Value . Value < JObject > ( ) . ToObject < Similarities > ( serializer ) ;
222227 else
223228 {
224229 dict ? . Add ( kv . Key , serializer . Deserialize ( kv . Value . Value . CreateReader ( ) ) ) ;
0 commit comments