查看ES存儲目錄,可發現有多個_state目錄,目錄下存放了以.st為後綴的文件。例如
這些st文件內容在ES源碼裏被稱之為MetaData,緩存了諸如NodeState,ClusterState,IndexState,ShardState等信息
nodes/0/_state/:
這層目錄在節點級別,該目錄下的global-1.st文件存儲的是MetaData中除去IndexMetaData的部分,即壹些集群級別的配置和templates。node-0.st中存儲的是NodeId。
nodes/0/indices/2Scrm6nuQOOxUN2ewtrNJw/_state/:
這層目錄在index級別,2Scrm6nuQOOxUN2ewtrNJw是IndexId,該目錄下的state-2.st文件存儲的是IndexMetaData。
nodes/0/indices/2Scrm6nuQOOxUN2ewtrNJw/0/_state/:
這層目錄在shard級別,該目錄下的state-0.st存儲的是ShardStateMetaData,包含是否是primary和allocationId等信息。
可以看到,集群相關的MetaData和Index的MetaData是在不同的目錄中存儲的。另外,集群相關的Meta會在所有的MasterNode和DataNode上存儲,而Index的Meta會在所有的MasterNode和存儲了該Index數據的DataNode上存儲。