Admin Indices Update Settings¶
Change specific index level settings in real time.
The REST endpoint is /_settings (to update all indices) or {index}/_settings to update one (or more) indices settings. The body of the request includes the updated settings, for example:
{
"index" : {
"number_of_replicas" : 4
}
}
The above will change the number of replicas to 4 from the current number of replicas. Here is a curl example:
curl -XPUT 'localhost:9200/my_index/_settings' -d '
{
"index" : {
"number_of_replicas" : 4
}
}
'
Below is the list of settings that can be changed using the update settings API:
Setting | Description |
---|---|
index.number_of_replicas | The number of replicas each shard has. |
index.auto_expand_replicas | Set to an actual value (like 0-all) or false to disable it. |
index.blocks.read_only | Set to true to have the index read only. false to allow writes and metadata changes. |
index.blocks.read | Set to true to disable read operations against the index. |
index.blocks.write | Set to true to disable write operations against the index. |
index.blocks.metadata | Set to true to disable metadata operations against the index. |
index.refresh_interval | The async refresh interval of a shard. |
index.term_index_interval | The Lucene index term interval. Only applies to newly created docs. |
index.term_index_divisor | The Lucene reader term index divisor. |
index.translog.flush_threshold_ops | When to flush based on operations. |
index.translog.flush_threshold_size | When to flush based on translog (bytes) size. |
index.translog.flush_threshold_period | When to flush based on a period of not flushing. |
index.translog.disable_flush | Disables flushing. Note, should be set for a short interval and then enabled. |
index.cache.filter.max_size | The maximum size of filter cache (per segment in shard). Set to -1 to disable. |
index.cache.filter.expire | The expire after access time for filter cache. Set to -1 to disable. |
index.gateway.snapshot_interval | The gateway snapshot interval (only applies to shared gateways). |
“merge policy”:/guide/reference/index-modules/merge.html | All the settings for the merge policy currently configured. A different merge policy can’t be set. |
index.routing.allocation.include.* | Controls which nodes the index will be allowed to be allocated on. |
index.routing.allocation.exclude.* | Controls which nodes the index will not be allowed ot be allocated on. |
index.routing.allocation.total_shards_per_node | Controls the total number of shards allowed to be allocated on a single node. Defaults to unbounded. |
index.recovery.initial_shards | When using local gateway a particular shard is recovered only if there can be allocated quorum shards in the cluster. It can be set to quorum (default), quorum-1 (or half), full and full-1. Number values are also supported, e.g. 1. |
index.gc_deletes | |
index.ttl.disable_purge | Disables temporarily the purge of expired docs. |
Bulk Indexing Usage¶
For example, the update settings API can be used to dynamically change the index from being more performant for bulk indexing, and then move it to more real time indexing state. Before the bulk indexing is started, use:
curl -XPUT localhost:9200/test/_settings -d '{
"index" : {
"refresh_interval" : "-1"
}
}'
(Another optimization option is to start the index without any replicas, and only later adding them, but that really depends on the use case).
Then, once bulk indexing is done, the settings can be updated (back to the defaults for example):
curl -XPUT localhost:9200/test/_settings -d '{
"index" : {
"refresh_interval" : "1s"
}
}'
And, an optimize should be called:
curl -XPOST 'http://localhost:9200/test/_optimize?max_num_segments=5'