2014-02-15 52 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

這完全不是一個有用的答案。正確的一個標記在上面 –