/// <summary>
        /// Update the index settings for the specified index
        /// </summary>
        public SettingsOperationResponse UpdateSettings(string index, IndexSettings settings)
        {
            string path = this.CreatePath(index) + "_settings";

            settings.Settings = settings.Settings
                                .Where(kv => IndexSettings.UpdateWhiteList.Any(p =>
            {
                return(kv.Key.StartsWith(p));
            }
                                                                               )).ToDictionary(kv => kv.Key, kv => kv.Value);

            var sb = new StringBuilder();
            var sw = new StringWriter(sb);

            using (JsonWriter jsonWriter = new JsonTextWriter(sw))
            {
                jsonWriter.WriteStartObject();
                jsonWriter.WritePropertyName("index");
                jsonWriter.WriteStartObject();
                foreach (var kv in settings.Settings)
                {
                    jsonWriter.WritePropertyName(kv.Key);
                    jsonWriter.WriteValue(kv.Value);
                }

                jsonWriter.WriteEndObject();
            }
            string data = sb.ToString();

            var status = this.Connection.PutSync(path, data);

            var r = new SettingsOperationResponse();

            try
            {
                r = JsonConvert.DeserializeObject <SettingsOperationResponse>(status.Result);
            }
            catch
            {
            }
            r.IsValid          = status.Success;
            r.ConnectionStatus = status;
            return(r);
        }
        /// <summary>
        /// Update the index settings for the specified index
        /// </summary>
        public ISettingsOperationResponse UpdateSettings(string index, IndexSettings settings)
        {
            string path = this.PathResolver.CreateIndexPath(index, "_settings");

            settings.Settings = settings.Settings
                                .Where(kv => IndexSettings.UpdateWhiteList.Any(p => kv.Key.StartsWith(p))).ToDictionary(kv => kv.Key, kv => kv.Value);

            string data   = this.Serializer.Serialize(settings, Formatting.None);
            var    status = this.Connection.PutSync(path, data);

            var r = new SettingsOperationResponse();

            try
            {
                r = this.Deserialize <SettingsOperationResponse>(status.Result);
            }
            catch
            {
            }
            r.IsValid          = status.Success;
            r.ConnectionStatus = status;
            return(r);
        }