【问题标题】:Where does ElasticSearch store persistent settings?ElasticSearch 在哪里存储持久设置?
【发布时间】:2014-02-15 23:15:02
【问题描述】:

当我通过

获取我的 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 配置文件中吗?所以我的问题是当我的服务器重新启动时,它如何知道我的持久设置是什么?

不要告诉我不要担心,因为我几乎丢失了整个集群的数据,因为它在重新启动后拾取了我的配置文件中的所有设置,而不是上面显示的持久设置:)

【问题讨论】:

    标签: lucene elasticsearch


    【解决方案1】:

    持久性设置存储在全局集群状态文件中的每个主合格节点上,可以在 Elasticsearch 数据目录中找到:data/CLUSTER_NAME/nodes/N/_state,其中CLUSTER_NAME 是集群名称,N 是节点号(0 如果这是这台机器上的唯一节点)。文件名的格式如下:global-NNN 其中NNN 是集群状态的版本。

    除了持久性设置之外,该文件还可能包含其他全局元数据,例如索引模板。默认情况下,全局集群状态文件以二进制 SMILE 格式存储。出于调试目的,如果您想查看此文件中实际存储的内容,可以通过将以下行添加到 elasticsearch.yml 文件中来将此文件的格式更改为 JSON:

    format: json

    每次集群状态发生变化时,所有符合主节点条件的节点都会存储新版本的文件,因此在集群重启期间,首先启动并选择自己作为主节点的节点将拥有最新版本的集群状态。如果您在符合主节点资格的节点之一不属于集群(因此无法使用您的设置存储最新版本)并且在重新启动后该节点成为集群主节点时更新设置,则您所描述的可能是可能的并将其过时的设置传播到所有其他节点。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-21
    • 1970-01-01
    • 1970-01-01
    • 2023-01-16
    • 2021-08-29
    • 2014-09-21
    • 1970-01-01
    相关资源
    最近更新 更多