All Downloads are FREE. Search and download functionalities are using the official Maven repository.

co.elastic.clients.elasticsearch.cluster.PutComponentTemplateRequest Maven / Gradle / Ivy

/*
 * Licensed to Elasticsearch B.V. under one or more contributor
 * license agreements. See the NOTICE file distributed with
 * this work for additional information regarding copyright
 * ownership. Elasticsearch B.V. licenses this file to you under
 * the Apache License, Version 2.0 (the "License"); you may
 * not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */

//----------------------------------------------------
// THIS CODE IS GENERATED. MANUAL EDITS WILL BE LOST.
//----------------------------------------------------

package co.elastic.clients.elasticsearch.cluster;

import co.elastic.clients.elasticsearch._types.ErrorResponse;
import co.elastic.clients.elasticsearch._types.RequestBase;
import co.elastic.clients.elasticsearch._types.Time;
import co.elastic.clients.elasticsearch.indices.IndexState;
import co.elastic.clients.json.JsonData;
import co.elastic.clients.json.JsonpDeserializable;
import co.elastic.clients.json.JsonpDeserializer;
import co.elastic.clients.json.JsonpMapper;
import co.elastic.clients.json.JsonpSerializable;
import co.elastic.clients.json.ObjectBuilderDeserializer;
import co.elastic.clients.json.ObjectDeserializer;
import co.elastic.clients.transport.Endpoint;
import co.elastic.clients.transport.endpoints.SimpleEndpoint;
import co.elastic.clients.util.ApiTypeHelper;
import co.elastic.clients.util.ObjectBuilder;
import jakarta.json.stream.JsonGenerator;
import java.lang.Boolean;
import java.lang.Long;
import java.lang.String;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
import java.util.function.Function;
import javax.annotation.Nullable;

// typedef: cluster.put_component_template.Request

/**
 * Creates or updates a component template. Component templates are building
 * blocks for constructing index templates that specify index mappings,
 * settings, and aliases.
 * 

* An index template can be composed of multiple component templates. To use a * component template, specify it in an index template’s * composed_of list. Component templates are only applied to new * data streams and indices as part of a matching index template. *

* Settings and mappings specified directly in the index template or the create * index request override any settings or mappings specified in a component * template. *

* Component templates are only used during index creation. For data streams, * this includes data stream creation and the creation of a stream’s backing * indices. Changes to component templates do not affect existing indices, * including a stream’s backing indices. *

* You can use C-style /* *\/ block comments in component * templates. You can include comments anywhere in the request body except * before the opening curly bracket. * * @see API * specification */ @JsonpDeserializable public class PutComponentTemplateRequest extends RequestBase implements JsonpSerializable { private final Map meta; @Nullable private final Boolean allowAutoCreate; @Nullable private final Boolean create; @Nullable private final Time masterTimeout; private final String name; private final IndexState template; @Nullable private final Long version; // --------------------------------------------------------------------------------------------- private PutComponentTemplateRequest(Builder builder) { this.meta = ApiTypeHelper.unmodifiable(builder.meta); this.allowAutoCreate = builder.allowAutoCreate; this.create = builder.create; this.masterTimeout = builder.masterTimeout; this.name = ApiTypeHelper.requireNonNull(builder.name, this, "name"); this.template = ApiTypeHelper.requireNonNull(builder.template, this, "template"); this.version = builder.version; } public static PutComponentTemplateRequest of(Function> fn) { return fn.apply(new Builder()).build(); } /** * Optional user metadata about the component template. May have any contents. * This map is not automatically generated by Elasticsearch. This information is * stored in the cluster state, so keeping it short is preferable. To unset * _meta, replace the template without specifying this information. *

* API name: {@code _meta} */ public final Map meta() { return this.meta; } /** * This setting overrides the value of the action.auto_create_index * cluster setting. If set to true in a template, then indices can * be automatically created using that template even if auto-creation of indices * is disabled via actions.auto_create_index. If set to * false then data streams matching the template must always be * explicitly created. *

* API name: {@code allow_auto_create} */ @Nullable public final Boolean allowAutoCreate() { return this.allowAutoCreate; } /** * If true, this request cannot replace or update existing * component templates. *

* API name: {@code create} */ @Nullable public final Boolean create() { return this.create; } /** * Period to wait for a connection to the master node. If no response is * received before the timeout expires, the request fails and returns an error. *

* API name: {@code master_timeout} */ @Nullable public final Time masterTimeout() { return this.masterTimeout; } /** * Required - Name of the component template to create. Elasticsearch includes * the following built-in component templates: logs-mappings; * 'logs-settings; metrics-mappings; metrics-settings;synthetics-mapping; synthetics-settings. Elastic Agent uses these templates to configure backing indices for its data streams. If you use Elastic Agent and want to overwrite one of these templates, set the versionfor your replacement template higher than the current version. If you don’t use Elastic Agent and want to disable all built-in component and index templates, setstack.templates.enabledtofalse` * using the cluster update settings API. *

* API name: {@code name} */ public final String name() { return this.name; } /** * Required - The template to be applied which includes mappings, settings, or * aliases configuration. *

* API name: {@code template} */ public final IndexState template() { return this.template; } /** * Version number used to manage component templates externally. This number * isn't automatically generated or incremented by Elasticsearch. To unset a * version, replace the template without specifying a version. *

* API name: {@code version} */ @Nullable public final Long version() { return this.version; } /** * Serialize this object to JSON. */ public void serialize(JsonGenerator generator, JsonpMapper mapper) { generator.writeStartObject(); serializeInternal(generator, mapper); generator.writeEnd(); } protected void serializeInternal(JsonGenerator generator, JsonpMapper mapper) { if (ApiTypeHelper.isDefined(this.meta)) { generator.writeKey("_meta"); generator.writeStartObject(); for (Map.Entry item0 : this.meta.entrySet()) { generator.writeKey(item0.getKey()); item0.getValue().serialize(generator, mapper); } generator.writeEnd(); } if (this.allowAutoCreate != null) { generator.writeKey("allow_auto_create"); generator.write(this.allowAutoCreate); } generator.writeKey("template"); this.template.serialize(generator, mapper); if (this.version != null) { generator.writeKey("version"); generator.write(this.version); } } // --------------------------------------------------------------------------------------------- /** * Builder for {@link PutComponentTemplateRequest}. */ public static class Builder extends RequestBase.AbstractBuilder implements ObjectBuilder { @Nullable private Map meta; @Nullable private Boolean allowAutoCreate; @Nullable private Boolean create; @Nullable private Time masterTimeout; private String name; private IndexState template; @Nullable private Long version; /** * Optional user metadata about the component template. May have any contents. * This map is not automatically generated by Elasticsearch. This information is * stored in the cluster state, so keeping it short is preferable. To unset * _meta, replace the template without specifying this information. *

* API name: {@code _meta} *

* Adds all entries of map to meta. */ public final Builder meta(Map map) { this.meta = _mapPutAll(this.meta, map); return this; } /** * Optional user metadata about the component template. May have any contents. * This map is not automatically generated by Elasticsearch. This information is * stored in the cluster state, so keeping it short is preferable. To unset * _meta, replace the template without specifying this information. *

* API name: {@code _meta} *

* Adds an entry to meta. */ public final Builder meta(String key, JsonData value) { this.meta = _mapPut(this.meta, key, value); return this; } /** * This setting overrides the value of the action.auto_create_index * cluster setting. If set to true in a template, then indices can * be automatically created using that template even if auto-creation of indices * is disabled via actions.auto_create_index. If set to * false then data streams matching the template must always be * explicitly created. *

* API name: {@code allow_auto_create} */ public final Builder allowAutoCreate(@Nullable Boolean value) { this.allowAutoCreate = value; return this; } /** * If true, this request cannot replace or update existing * component templates. *

* API name: {@code create} */ public final Builder create(@Nullable Boolean value) { this.create = value; return this; } /** * Period to wait for a connection to the master node. If no response is * received before the timeout expires, the request fails and returns an error. *

* API name: {@code master_timeout} */ public final Builder masterTimeout(@Nullable Time value) { this.masterTimeout = value; return this; } /** * Period to wait for a connection to the master node. If no response is * received before the timeout expires, the request fails and returns an error. *

* API name: {@code master_timeout} */ public final Builder masterTimeout(Function> fn) { return this.masterTimeout(fn.apply(new Time.Builder()).build()); } /** * Required - Name of the component template to create. Elasticsearch includes * the following built-in component templates: logs-mappings; * 'logs-settings; metrics-mappings; metrics-settings;synthetics-mapping; synthetics-settings. Elastic Agent uses these templates to configure backing indices for its data streams. If you use Elastic Agent and want to overwrite one of these templates, set the versionfor your replacement template higher than the current version. If you don’t use Elastic Agent and want to disable all built-in component and index templates, setstack.templates.enabledtofalse` * using the cluster update settings API. *

* API name: {@code name} */ public final Builder name(String value) { this.name = value; return this; } /** * Required - The template to be applied which includes mappings, settings, or * aliases configuration. *

* API name: {@code template} */ public final Builder template(IndexState value) { this.template = value; return this; } /** * Required - The template to be applied which includes mappings, settings, or * aliases configuration. *

* API name: {@code template} */ public final Builder template(Function> fn) { return this.template(fn.apply(new IndexState.Builder()).build()); } /** * Version number used to manage component templates externally. This number * isn't automatically generated or incremented by Elasticsearch. To unset a * version, replace the template without specifying a version. *

* API name: {@code version} */ public final Builder version(@Nullable Long value) { this.version = value; return this; } @Override protected Builder self() { return this; } /** * Builds a {@link PutComponentTemplateRequest}. * * @throws NullPointerException * if some of the required fields are null. */ public PutComponentTemplateRequest build() { _checkSingleUse(); return new PutComponentTemplateRequest(this); } } // --------------------------------------------------------------------------------------------- /** * Json deserializer for {@link PutComponentTemplateRequest} */ public static final JsonpDeserializer _DESERIALIZER = ObjectBuilderDeserializer .lazy(Builder::new, PutComponentTemplateRequest::setupPutComponentTemplateRequestDeserializer); protected static void setupPutComponentTemplateRequestDeserializer( ObjectDeserializer op) { op.add(Builder::meta, JsonpDeserializer.stringMapDeserializer(JsonData._DESERIALIZER), "_meta"); op.add(Builder::allowAutoCreate, JsonpDeserializer.booleanDeserializer(), "allow_auto_create"); op.add(Builder::template, IndexState._DESERIALIZER, "template"); op.add(Builder::version, JsonpDeserializer.longDeserializer(), "version"); } // --------------------------------------------------------------------------------------------- /** * Endpoint "{@code cluster.put_component_template}". */ public static final Endpoint _ENDPOINT = new SimpleEndpoint<>( "es/cluster.put_component_template", // Request method request -> { return "PUT"; }, // Request path request -> { final int _name = 1 << 0; int propsSet = 0; propsSet |= _name; if (propsSet == (_name)) { StringBuilder buf = new StringBuilder(); buf.append("/_component_template"); buf.append("/"); SimpleEndpoint.pathEncode(request.name, buf); return buf.toString(); } throw SimpleEndpoint.noPathTemplateFound("path"); }, // Path parameters request -> { Map params = new HashMap<>(); final int _name = 1 << 0; int propsSet = 0; propsSet |= _name; if (propsSet == (_name)) { params.put("name", request.name); } return params; }, // Request parameters request -> { Map params = new HashMap<>(); if (request.masterTimeout != null) { params.put("master_timeout", request.masterTimeout._toJsonString()); } if (request.create != null) { params.put("create", String.valueOf(request.create)); } return params; }, SimpleEndpoint.emptyMap(), true, PutComponentTemplateResponse._DESERIALIZER); }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy