Elasticsearch中生成的数据文件一般来说主要有三种,分别是state、index和translog。
查看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上存储。