ElasticSearch在哪里存储持久性设置?
当我通过获取我的ElasticSearch服务器设置时
curl -XGET localhost:9200/_cluster/settings
我看到了持久性和临时性设置。
{ "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
配置文件中吗?所以我的问题是服务器重新启动时,如何知道我的持久设置是什么?
不要告诉我不要担心,因为我几乎失去了整个群集的数据,因为它在重新启动后获取了配置文件中的所有设置,而不是上面显示的持久性设置:)
回答:
持久性设置存储在全局集群状态文件中的每个主节点上,该节点可在Elasticsearch数据目录中找到:data/CLUSTER_NAME/nodes/N/_state
,其中CLUSTER_NAME
是集群的名称和N
节点号(0
如果这是该计算机上的唯一节点)
)。文件名具有以下格式:global-NNN
其中NNN
,集群状态的版本。
除了永久设置,此文件还可以包含其他全局元数据,例如索引模板。默认情况下,全局群集状态文件以二进制SMILE格式存储。出于调试目的,如果您想查看该文件中实际存储的内容,可以通过在elasticsearch.yml
文件中添加以下行来将此文件的格式更改为JSON
:
format: json
每次群集状态更改时,所有符合主机资格的节点都会存储该文件的新版本,因此在群集重新启动期间,首先启动并选举自己作为主机的节点将具有群集状态的最新版本。如果您在一个符合Master要求的节点不属于集群的情况下更新了设置(因此无法使用您的设置存储最新版本),并且在重启后该节点成为了集群的主人,那么您描述的内容就可能实现。并将其过时的设置传播到所有其他节点。
以上是 ElasticSearch在哪里存储持久性设置? 的全部内容, 来源链接: utcz.com/qa/401769.html