为什么对elasticsearch / _cluster / settings端点的put调用不会考虑更新设置?

时间:2016-07-11 14:53:16

标签: elasticsearch elasticsearch-2.0

我正在运行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不会尊重此请求并更新这些设置?应该注意,当我在文档中使用样本请求的精确内容时,也会发生这种情况。

1 个答案:

答案 0 :(得分:0)

我总是使用这种方法:

curl -XPUT "http://localhost:9200/_cluster/settings" -d'
{
  "persistent": {
    "discovery.zen.minimum_master_nodes": 2
  }
}'

此外,只有discovery.zen.minimum_master_nodes可以动态更新。另一个不是。