2014-02-15 22 views
6

当我通过ElasticSearch在哪里存储持久性设置?

curl -XGET localhost:9200/_cluster/settings 

让我ElasticSearch服务器设置我看到持续性和短暂的设置。

{ 
    "persistent": { 
    "cluster.routing.allocation.cluster_concurrent_rebalance": "0", 
    "threadpool.index.size": "20", 
    "threadpool.search.size": "30", 
    "cluster.routing.allocation.disable_allocation": "false", 
    "threadpool.bulk.size": "40" 
    }, 
    "transient": {} 
} 

如果我设置了永久设置,它不会将它保存到我的config/elasticsearch.yml配置文件中?所以我的问题是当我的服务器重新启动时,它如何知道我的持久设置是什么?

不要告诉我不要担心,因为我几乎失去了数据的我的整个集群的价值,因为它在我的配置文件中找到的所有设置后重新启动该项目,不超过:)

回答

12
所示的持久设置

永久性设置存储在全局集群状态文件中的每个主节点上,该节点位于Elasticsearch数据目录中:data/CLUSTER_NAME/nodes/N/_state,其中CLUSTER_NAME是集群的名称,N是节点编号(0如果这是只有本机上的节点)。文件名具有以下格式:global-NNN其中NNN是群集状态的版本。

除了持久设置,此文件可能包含其他全局元数据,如索引模板。默认情况下,全局群集状态文件以二进制SMILE格式存储。

format: json

每次群集状态的变化:为了进行调试,如果你想看看有什么实际存储在这个文件中,您可以通过添加以下行至elasticsearch.yml文件更改该文件以JSON格式,所有符合主节点的节点都会存储新版本的文件,因此在群集重新启动时,首先启动并将自身选为主节点的节点将具有群集状态的最新版本。如果当您的其中一个主节点节点不是集群的一部分(因此无法使用您的设置存储最新版本)更新设置,并且在重新启动后此节点成为集群主节点并将其过时的设置传播到所有其他节点。

+0

FWIW,你的数据目录可能是'在/ var/lib中/ elasticsearch'(见https://www.elastic.co/guide/ en/elasticsearch/reference/current/setup-dir-layout.html以获取具体信息) – Dusty

0

瞬间与持久的设置是在JSON身体提供:

PUT /_cluster/settings 
{ 
    "persistent" : { 
     "discovery.zen.minimum_master_nodes" : 2 
    }, 
    "transient" : { 
     "indices.store.throttle.max_bytes_per_sec" : "50mb" 
    } 
} 
+0

这完全不是一个有用的答案。正确的一个标记在上面 –