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



我正在运行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是动态可动态更新的。另一个不是。

最新更新