我正在运行Elasticsearch 2.3.3,并希望建立一个集群,以便我可以模拟生产就绪设置。这是在两个带有 docker 的 Azure VM 上设置的。
我正在查看/_cluster/settings
api,以允许自己更新设置。根据弹性体文档,应该可以更新集群上的设置。
我已经在每台机器上运行了命令:
docker run -d --name elastic -p 9200:9200 -p 9300:9300 elasticsearch --cluster.name=api-update-test
因此,现在每台机器都将自己视为 1 台机器集群中的一个主节点和数据节点。然后,我向其中一个发出了放置请求,告诉它在哪里可以找到discovery.zen.ping.unicast.hosts
,并使用以下命令(在powershell中)更新discovery.zen.minimum_master_nodes
curl
-Method PUT
-Body '{"persistent":
{"discovery.zen.minimum_master_nodes":2,
"discovery.zen.ping.unicast.hosts":["<machine-one-ip>:9300"]}
}'
-ContentType application/json
-Uri http://<machine-two-ip>:9200/_cluster/settings
响应总是以200
响应返回,但确认原始设置:{"acknowledged":true,"persistent":{},"transient":{}}
为什么 elasticsearch 不尊重此请求并更新这些设置?应该注意的是,当我在文档中使用示例请求的精确内容时,也会发生这种情况。
我一直使用这种方法:
curl -XPUT "http://localhost:9200/_cluster/settings" -d'
{
"persistent": {
"discovery.zen.minimum_master_nodes": 2
}
}'
而且,只有discovery.zen.minimum_master_nodes
是动态可动态更新的。另一个不是。