我正在运行Elasticsearch 2.3.3,我正在寻找一个集群,以便我可以模拟生产就绪设置。这是在带有docker的两个Azure VM上设置的。
我正在查看/_cluster/settings
api,允许自己更新设置。根据{{3}},应该可以更新群集上的设置。
我在每台机器上运行命令:
docker run -d --name elastic -p 9200:9200 -p 9300:9300 elasticsearch --cluster.name=api-update-test
所以现在每台机器都将自己视为1个机器集群中的一个主节点和数据节点。然后我向其中一个发出了put请求,告诉它在哪里找到discovery.zen.ping.unicast.hosts
,并使用以下命令更新discovery.zen.minimum_master_nodes
(在powershell中)
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不会尊重此请求并更新这些设置?应该注意,当我在文档中使用样本请求的精确内容时,也会发生这种情况。
答案 0 :(得分:0)
我总是使用这种方法:
curl -XPUT "http://localhost:9200/_cluster/settings" -d'
{
"persistent": {
"discovery.zen.minimum_master_nodes": 2
}
}'
此外,只有discovery.zen.minimum_master_nodes
可以动态更新。另一个不是。