Modifying Cluster Parameters
Function
The core configuration information of an Elasticsearch cluster is stored in the elasticsearch.yml file, while that of an OpenSearch cluster is stored in the opensearch.yml file. You can modify a cluster's configuration file for purposes like accelerating queries, modifying cross-domain access configuration, adjusting the internal cache size, and managing the task queue size.
Before calling this API, call the Obtaining the Parameter Configuration List API to verify the cluster's parameter settings, and modify them as required.
Constraints
Set the values of any custom parameters to those supported by Elasticsearch. Otherwise, the cluster may fail to restart. Exercise caution when performing this operation.
Calling Method
For details, see Calling APIs.
URI
POST /v1.0/{project_id}/clusters/{cluster_id}/ymls/update
|
Parameter |
Mandatory |
Type |
Description |
|---|---|---|---|
|
project_id |
Yes |
String |
Definition: Project ID. For details about how to obtain the project ID and name, see Obtaining the Project ID and Name. Constraints: N/A Value range: Project ID of the account. Default value: N/A |
|
cluster_id |
Yes |
String |
Definition: ID of the cluster whose parameter settings you want to be modify. For details about how to obtain the cluster ID, see Obtaining the Cluster ID. Constraints: N/A Value range: Cluster ID. Default value: N/A |
Request Parameters
|
Parameter |
Mandatory |
Type |
Description |
|---|---|---|---|
|
edit |
Yes |
UpdateYmlsReqEdit object |
Definition: Configuration file information. Constraints: N/A |
|
inst_type |
No |
String |
Node type. KooSearch clusters contain different types of nodes. kos: search control node kos-doc: document parsing node |
|
Parameter |
Mandatory |
Type |
Description |
|---|---|---|---|
|
modify |
No |
UpdateYmlsReqEditModify object |
Definition: Modify parameter settings. Constraints:
|
|
delete |
No |
UpdateYmlsReqEditModify object |
Definition: Delete custom parameter settings. Constraints:
|
|
reset |
No |
UpdateYmlsReqEditModify object |
Definition: Reset parameter settings. Constraints:
|
Response Parameters
Status code: 200
|
Parameter |
Type |
Description |
|---|---|---|
|
acknowledged |
Boolean |
Definition: Parameter settings modified successfully or not. Value range:
|
|
externalMessage |
String |
Definition: Error description. Value range: If acknowledged was set to true, null is returned for this field. |
|
httpErrorResponse |
String |
Definition: HTTP error information. The default value is null. Value range: N/A |
Example Requests
Modify parameter settings.
POST https://{Endpoint}/v1.0/{project_id}/clusters/4f3deec3-efa8-4598-bf91-560aad1377a3/ymls/update
{
"edit" : {
"modify" : {
"elasticsearch.yml" : {
"thread_pool.force_merge.size" : 1
}
}
}
}
Example Responses
Status code: 200
Request succeeded.
{
"acknowledged" : true
}
SDK Sample Code
The SDK sample code is as follows.
Java
Modify parameter settings.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
package com.huaweicloud.sdk.test; import com.huaweicloud.sdk.core.auth.ICredential; import com.huaweicloud.sdk.core.auth.BasicCredentials; import com.huaweicloud.sdk.core.exception.ConnectionException; import com.huaweicloud.sdk.core.exception.RequestTimeoutException; import com.huaweicloud.sdk.core.exception.ServiceResponseException; import com.huaweicloud.sdk.css.v1.region.CssRegion; import com.huaweicloud.sdk.css.v1.*; import com.huaweicloud.sdk.css.v1.model.*; public class UpdateYmlsSolution { public static void main(String[] args) { // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment String ak = System.getenv("CLOUD_SDK_AK"); String sk = System.getenv("CLOUD_SDK_SK"); String projectId = "{project_id}"; ICredential auth = new BasicCredentials() .withProjectId(projectId) .withAk(ak) .withSk(sk); CssClient client = CssClient.newBuilder() .withCredential(auth) .withRegion(CssRegion.valueOf("<YOUR REGION>")) .build(); UpdateYmlsRequest request = new UpdateYmlsRequest(); request.withClusterId("{cluster_id}"); UpdateYmlsReq body = new UpdateYmlsReq(); UpdateYmlsReqEditModify modifyEdit = new UpdateYmlsReqEditModify(); modifyEdit.withElasticsearchYml("{\"thread_pool.force_merge.size\":1}"); UpdateYmlsReqEdit editbody = new UpdateYmlsReqEdit(); editbody.withModify(modifyEdit); body.withEdit(editbody); request.withBody(body); try { UpdateYmlsResponse response = client.updateYmls(request); System.out.println(response.toString()); } catch (ConnectionException e) { e.printStackTrace(); } catch (RequestTimeoutException e) { e.printStackTrace(); } catch (ServiceResponseException e) { e.printStackTrace(); System.out.println(e.getHttpStatusCode()); System.out.println(e.getRequestId()); System.out.println(e.getErrorCode()); System.out.println(e.getErrorMsg()); } } } |
Python
Modify parameter settings.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# coding: utf-8 import os from huaweicloudsdkcore.auth.credentials import BasicCredentials from huaweicloudsdkcss.v1.region.css_region import CssRegion from huaweicloudsdkcore.exceptions import exceptions from huaweicloudsdkcss.v1 import * if __name__ == "__main__": # The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. # In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment ak = os.environ["CLOUD_SDK_AK"] sk = os.environ["CLOUD_SDK_SK"] projectId = "{project_id}" credentials = BasicCredentials(ak, sk, projectId) client = CssClient.new_builder() \ .with_credentials(credentials) \ .with_region(CssRegion.value_of("<YOUR REGION>")) \ .build() try: request = UpdateYmlsRequest() request.cluster_id = "{cluster_id}" modifyEdit = UpdateYmlsReqEditModify( elasticsearch_yml="{\"thread_pool.force_merge.size\":1}" ) editbody = UpdateYmlsReqEdit( modify=modifyEdit ) request.body = UpdateYmlsReq( edit=editbody ) response = client.update_ymls(request) print(response) except exceptions.ClientRequestException as e: print(e.status_code) print(e.request_id) print(e.error_code) print(e.error_msg) |
Go
Modify parameter settings.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
package main import ( "fmt" "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic" css "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/css/v1" "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/css/v1/model" region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/css/v1/region" ) func main() { // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment ak := os.Getenv("CLOUD_SDK_AK") sk := os.Getenv("CLOUD_SDK_SK") projectId := "{project_id}" auth := basic.NewCredentialsBuilder(). WithAk(ak). WithSk(sk). WithProjectId(projectId). Build() client := css.NewCssClient( css.CssClientBuilder(). WithRegion(region.ValueOf("<YOUR REGION>")). WithCredential(auth). Build()) request := &model.UpdateYmlsRequest{} request.ClusterId = "{cluster_id}" var elasticsearchYmlModify interface{} = "{\"thread_pool.force_merge.size\":1}" modifyEdit := &model.UpdateYmlsReqEditModify{ ElasticsearchYml: &elasticsearchYmlModify, } editbody := &model.UpdateYmlsReqEdit{ Modify: modifyEdit, } request.Body = &model.UpdateYmlsReq{ Edit: editbody, } response, err := client.UpdateYmls(request) if err == nil { fmt.Printf("%+v\n", response) } else { fmt.Println(err) } } |
More
For SDK sample code of more programming languages, see the Sample Code tab in API Explorer. SDK sample code can be automatically generated.
Status Codes
|
Status Code |
Description |
|---|---|
|
200 |
Request succeeded. |
|
400 |
Invalid request. Modify the request before retry. |
|
409 |
The request could not be completed due to a conflict with the current state of the resource. The resource that the client attempts to create already exists, or the update request fails to be processed because of a conflict. |
|
412 |
The server did not meet one of the preconditions contained in the request. |
Error Codes
See Error Codes.
Feedback
Was this page helpful?
Provide feedbackThank you very much for your feedback. We will continue working to improve the documentation.See the reply and handling status in My Cloud VOC.
For any further questions, feel free to contact us through the chatbot.
Chatbot