集群更新设置 API
编辑集群更新设置 API
编辑配置动态集群设置。
请求
编辑PUT /_cluster/settings
描述
编辑您可以使用集群更新设置 API 在运行中的集群上配置和更新动态设置。您也可以使用 elasticsearch.yml
在未启动或关闭的节点上本地配置动态设置。
使用集群更新设置 API 进行的更新可以是持久的,这会在集群重启后仍然有效;也可以是临时的,这会在集群重启后重置。您还可以使用 API 将临时或持久设置赋值为 null
来重置它们。
如果您使用多种方法配置相同的设置,Elasticsearch 会按照以下优先级顺序应用设置:
- 临时设置
- 持久设置
-
elasticsearch.yml
设置 - 默认设置值
例如,您可以应用临时设置来覆盖持久设置或 elasticsearch.yml
设置。但是,对 elasticsearch.yml
设置的更改不会覆盖已定义的临时或持久设置。
如果您使用 Elasticsearch Service,请使用用户设置功能来配置所有集群设置。此方法允许 Elasticsearch Service 自动拒绝可能破坏集群的不安全设置。
如果您在自己的硬件上运行 Elasticsearch,请使用集群更新设置 API 配置动态集群设置。仅将 elasticsearch.yml
用于静态集群设置和节点设置。该 API 不需要重启,并确保设置的值在所有节点上都相同。
我们不再建议使用临时集群设置。请改用持久集群设置。如果集群变得不稳定,临时设置可能会意外清除,从而导致潜在的不良集群配置。请参阅临时设置迁移指南。
查询参数
编辑-
flat_settings
- (可选,布尔值)如果为
true
,则以平面格式返回设置。默认为false
。 -
include_defaults
- (可选,布尔值)如果为
true
,则返回所有默认集群设置。默认为false
。 -
master_timeout
- (可选,时间单位)等待主节点的时间。如果在超时到期之前主节点不可用,则请求将失败并返回错误。默认为
30s
。也可以设置为-1
,表示请求永远不会超时。 -
timeout
- (可选,时间单位)在更新集群元数据后,等待集群中所有相关节点响应的时间。如果在超时到期之前未收到响应,则集群元数据更新仍然适用,但响应将指示该更新未完全确认。默认为
30s
。也可以设置为-1
,表示请求永远不会超时。
示例
编辑持久更新的示例
resp = client.cluster.put_settings( persistent={ "indices.recovery.max_bytes_per_sec": "50mb" }, ) print(resp)
response = client.cluster.put_settings( body: { persistent: { 'indices.recovery.max_bytes_per_sec' => '50mb' } } ) puts response
const response = await client.cluster.putSettings({ persistent: { "indices.recovery.max_bytes_per_sec": "50mb", }, }); console.log(response);
PUT /_cluster/settings { "persistent" : { "indices.recovery.max_bytes_per_sec" : "50mb" } }
临时更新的示例
我们不再建议使用临时集群设置。请改用持久集群设置。如果集群变得不稳定,临时设置可能会意外清除,从而导致潜在的不良集群配置。请参阅临时设置迁移指南。
resp = client.cluster.put_settings( flat_settings=True, transient={ "indices.recovery.max_bytes_per_sec": "20mb" }, ) print(resp)
response = client.cluster.put_settings( flat_settings: true, body: { transient: { 'indices.recovery.max_bytes_per_sec' => '20mb' } } ) puts response
const response = await client.cluster.putSettings({ flat_settings: "true", transient: { "indices.recovery.max_bytes_per_sec": "20mb", }, }); console.log(response);
PUT /_cluster/settings?flat_settings=true { "transient" : { "indices.recovery.max_bytes_per_sec" : "20mb" } }
更新的响应会返回已更改的设置,如下面的临时示例的响应所示
{ ... "persistent" : { }, "transient" : { "indices.recovery.max_bytes_per_sec" : "20mb" } }
此示例重置一个设置
resp = client.cluster.put_settings( transient={ "indices.recovery.max_bytes_per_sec": None }, ) print(resp)
response = client.cluster.put_settings( body: { transient: { 'indices.recovery.max_bytes_per_sec' => nil } } ) puts response
const response = await client.cluster.putSettings({ transient: { "indices.recovery.max_bytes_per_sec": null, }, }); console.log(response);
PUT /_cluster/settings { "transient" : { "indices.recovery.max_bytes_per_sec" : null } }
响应不包括已重置的设置
{ ... "persistent" : {}, "transient" : {} }
您也可以使用通配符重置设置。例如,要重置所有动态的 indices.recovery
设置
resp = client.cluster.put_settings( transient={ "indices.recovery.*": None }, ) print(resp)
response = client.cluster.put_settings( body: { transient: { "indices.recovery.*": nil } } ) puts response
const response = await client.cluster.putSettings({ transient: { "indices.recovery.*": null, }, }); console.log(response);
PUT /_cluster/settings { "transient" : { "indices.recovery.*" : null } }