Update Indices Settings API
edit
The Update Indices Settings API allows to change specific index level settings.
Update Indices Settings Request
edit
An UpdateSettingsRequest
:
UpdateSettingsRequest request = new UpdateSettingsRequest("index1");
UpdateSettingsRequest requestMultiple =
new UpdateSettingsRequest("index1", "index2");
UpdateSettingsRequest requestAll = new UpdateSettingsRequest();
|
Update settings for one index
|
|
Update settings for multiple indices
|
|
Update settings for all indices
|
At least one setting to be updated must be provided:
String settingKey = "index.number_of_replicas";
int settingValue = 0;
Settings settings =
Settings.builder()
.put(settingKey, settingValue)
.build();
|
Sets the index settings to be applied
|
Providing the Settings
edit
The settings to be applied can be provided in different ways:
String settingKey = "index.number_of_replicas";
int settingValue = 0;
Settings settings =
Settings.builder()
.put(settingKey, settingValue)
.build();
|
Creates a setting as Settings
|
Settings.Builder settingsBuilder =
Settings.builder()
.put(settingKey, settingValue);
request.settings(settingsBuilder);
|
Settings provided as Settings.Builder
|
request.settings(
"{\"index.number_of_replicas\": \"2\"}"
, XContentType.JSON);
|
Settings provided as String
|
Map<String, Object> map = new HashMap<>();
map.put(settingKey, settingValue);
request.settings(map);
|
Settings provided as a Map
|
The following arguments can optionally be provided:
request.setPreserveExisting(false);
|
Whether to update existing settings. If set to true existing settings
on an index remain unchanged, the default is false
|
request.timeout(TimeValue.timeValueMinutes(2));
request.timeout("2m");
|
Timeout to wait for the all the nodes to acknowledge the new setting
as a TimeValue
|
|
Timeout to wait for the all the nodes to acknowledge the new setting
as a String
|
request.masterNodeTimeout(TimeValue.timeValueMinutes(1));
request.masterNodeTimeout("1m");
|
Timeout to connect to the master node as a TimeValue
|
|
Timeout to connect to the master node as a String
|
request.indicesOptions(IndicesOptions.lenientExpandOpen());
|
Setting IndicesOptions controls how unavailable indices are resolved and
how wildcard expressions are expanded
|
Synchronous Execution
edit
AcknowledgedResponse updateSettingsResponse =
client.indices().putSettings(request, RequestOptions.DEFAULT);
Asynchronous Execution
edit
The asynchronous execution of an indices update settings requires both the
UpdateSettingsRequest
instance and an ActionListener
instance to be
passed to the asynchronous method:
client.indices().putSettingsAsync(request, RequestOptions.DEFAULT, listener);
|
The UpdateSettingsRequest to execute and the ActionListener
to use when the execution completes
|
The asynchronous method does not block and returns immediately. Once it is
completed the ActionListener
is called back using the onResponse
method
if the execution successfully completed or using the onFailure
method if
it failed.
A typical listener for UpdateSettingsResponse
looks like:
ActionListener<AcknowledgedResponse> listener =
new ActionListener<AcknowledgedResponse>() {
@Override
public void onResponse(AcknowledgedResponse updateSettingsResponse) {
}
@Override
public void onFailure(Exception e) {
}
};
|
Called when the execution is successfully completed. The response is
provided as an argument
|
|
Called in case of a failure. The raised exception is provided as an argument
|
Update Indices Settings Response
edit
The returned UpdateSettingsResponse
allows to retrieve information about the
executed operation as follows:
boolean acknowledged = updateSettingsResponse.isAcknowledged();
|
Indicates whether all of the nodes have acknowledged the request
|