From ce62d01776b6b5fa81552839f0b5d6ef27196601 Mon Sep 17 00:00:00 2001 From: hrach977 Date: Mon, 19 Mar 2018 20:29:04 +0400 Subject: [PATCH] add support for update index settings (without the tests, yet) --- .../org/elasticsearch/client/Request.java | 12 +++++++++++ .../client/RestHighLevelClient.java | 20 +++++++++++++++++++ .../settings/put/UpdateSettingsRequest.java | 15 ++++++++++---- .../settings/put/UpdateSettingsResponse.java | 10 ++++++++++ 4 files changed, 53 insertions(+), 4 deletions(-) diff --git a/client/rest-high-level/src/main/java/org/elasticsearch/client/Request.java b/client/rest-high-level/src/main/java/org/elasticsearch/client/Request.java index fb036bf35faf0..5f76da5767f5e 100755 --- a/client/rest-high-level/src/main/java/org/elasticsearch/client/Request.java +++ b/client/rest-high-level/src/main/java/org/elasticsearch/client/Request.java @@ -41,6 +41,7 @@ import org.elasticsearch.action.admin.indices.open.OpenIndexRequest; import org.elasticsearch.action.admin.indices.refresh.RefreshRequest; import org.elasticsearch.action.admin.indices.rollover.RolloverRequest; +import org.elasticsearch.action.admin.indices.settings.put.UpdateSettingsRequest; import org.elasticsearch.action.admin.indices.shrink.ResizeRequest; import org.elasticsearch.action.admin.indices.shrink.ResizeType; import org.elasticsearch.action.bulk.BulkRequest; @@ -202,6 +203,17 @@ static Request updateAliases(IndicesAliasesRequest indicesAliasesRequest) throws return new Request(HttpPost.METHOD_NAME, "/_aliases", parameters.getParams(), entity); } + static Request updateSettings(UpdateSettingsRequest updateSettingsRequest) throws IOException { + String endpoint = endpoint(updateSettingsRequest.indices(), "_settings"); + + Params parameters = Params.builder() + .withTimeout(updateSettingsRequest.timeout()) + .withMasterTimeout(updateSettingsRequest.masterNodeTimeout()); + + HttpEntity entity = createEntity(updateSettingsRequest, REQUEST_BODY_CONTENT_TYPE); + return new Request(HttpPut.METHOD_NAME, endpoint, parameters.getParams(), entity); + } + static Request putMapping(PutMappingRequest putMappingRequest) throws IOException { // The concreteIndex is an internal concept, not applicable to requests made over the REST API. if (putMappingRequest.getConcreteIndex() != null) { diff --git a/client/rest-high-level/src/main/java/org/elasticsearch/client/RestHighLevelClient.java b/client/rest-high-level/src/main/java/org/elasticsearch/client/RestHighLevelClient.java index bf80aa7720741..94af2f13e0d73 100755 --- a/client/rest-high-level/src/main/java/org/elasticsearch/client/RestHighLevelClient.java +++ b/client/rest-high-level/src/main/java/org/elasticsearch/client/RestHighLevelClient.java @@ -26,6 +26,8 @@ import org.elasticsearch.action.ActionListener; import org.elasticsearch.action.ActionRequest; import org.elasticsearch.action.ActionRequestValidationException; +import org.elasticsearch.action.admin.indices.settings.put.UpdateSettingsRequest; +import org.elasticsearch.action.admin.indices.settings.put.UpdateSettingsResponse; import org.elasticsearch.action.bulk.BulkRequest; import org.elasticsearch.action.bulk.BulkResponse; import org.elasticsearch.action.delete.DeleteRequest; @@ -375,6 +377,24 @@ public final void updateAsync(UpdateRequest updateRequest, ActionListener + * See + */ + public final UpdateSettingsResponse updateSettings(UpdateSettingsRequest updateSettingsRequest, Header... headers) throws IOException { + return performRequestAndParseEntity(updateSettingsRequest, Request::updateSettings, UpdateSettingsResponse::fromXContent, emptySet(), headers); + } + + /** + *Asynchronously updates the settings of an index/indices or all the indices + *

+ * See + */ + public final void updateSettingsAsync(UpdateSettingsRequest updateSettingsRequest, ActionListener listener, Header... headers) { + performRequestAsyncAndParseEntity(updateSettingsRequest, Request::updateSettings, UpdateSettingsResponse::fromXContent, listener, emptySet(), headers); + } + /** * Deletes a document by id using the Delete API * diff --git a/server/src/main/java/org/elasticsearch/action/admin/indices/settings/put/UpdateSettingsRequest.java b/server/src/main/java/org/elasticsearch/action/admin/indices/settings/put/UpdateSettingsRequest.java index 686bf8a74b85d..d46167e80d6e6 100644 --- a/server/src/main/java/org/elasticsearch/action/admin/indices/settings/put/UpdateSettingsRequest.java +++ b/server/src/main/java/org/elasticsearch/action/admin/indices/settings/put/UpdateSettingsRequest.java @@ -28,9 +28,7 @@ import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.settings.Settings; -import org.elasticsearch.common.xcontent.XContentBuilder; -import org.elasticsearch.common.xcontent.XContentFactory; -import org.elasticsearch.common.xcontent.XContentType; +import org.elasticsearch.common.xcontent.*; import java.io.IOException; import java.util.Map; @@ -43,7 +41,7 @@ /** * Request for an update index settings action */ -public class UpdateSettingsRequest extends AcknowledgedRequest implements IndicesRequest.Replaceable { +public class UpdateSettingsRequest extends AcknowledgedRequest implements IndicesRequest.Replaceable, ToXContentObject{ private String[] indices; private IndicesOptions indicesOptions = IndicesOptions.fromOptions(false, false, true, true); @@ -178,4 +176,13 @@ public void writeTo(StreamOutput out) throws IOException { writeSettingsToStream(settings, out); out.writeBoolean(preserveExisting); } + + @Override + public XContentBuilder toXContent(XContentBuilder builder, ToXContent.Params params) throws IOException { + builder.startObject(); + settings.toXContent(builder, params); + builder.endObject(); + return builder; + } + } diff --git a/server/src/main/java/org/elasticsearch/action/admin/indices/settings/put/UpdateSettingsResponse.java b/server/src/main/java/org/elasticsearch/action/admin/indices/settings/put/UpdateSettingsResponse.java index b1475843aac5f..4504b3e5c6cf7 100644 --- a/server/src/main/java/org/elasticsearch/action/admin/indices/settings/put/UpdateSettingsResponse.java +++ b/server/src/main/java/org/elasticsearch/action/admin/indices/settings/put/UpdateSettingsResponse.java @@ -22,6 +22,8 @@ import org.elasticsearch.action.support.master.AcknowledgedResponse; import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; +import org.elasticsearch.common.xcontent.ConstructingObjectParser; +import org.elasticsearch.common.xcontent.XContentParser; import java.io.IOException; @@ -30,6 +32,9 @@ */ public class UpdateSettingsResponse extends AcknowledgedResponse { + private static final ConstructingObjectParser PARSER = new ConstructingObjectParser<>("update_settings", + true, args -> new UpdateSettingsResponse((boolean) args[0])); + UpdateSettingsResponse() { } @@ -48,4 +53,9 @@ public void writeTo(StreamOutput out) throws IOException { super.writeTo(out); writeAcknowledged(out); } + + public static UpdateSettingsResponse fromXContent(XContentParser parser) { + return PARSER.apply(parser, null); + } + }