当前位置: 首页 > 面试题库 >

ElasticSearch在哪里存储持久性设置?

宗政元青
2023-03-14
问题内容

当我通过获取我的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安装,可以在用logstash插入数​​据时使用kibana可视化它们。 conf文件中的所有内容均已注释,因此它使用的是相对于elasticsearch文件夹的默认文件夹。 这怎么可能? 但是,此命令将删除数据: 谢谢。 ps:忘了说我在窗户上 问题答案: 如果您在Linux上安装了ES,则默认数据文件夹位于(CentOS)或(Ubuntu)

  • 我不确定我是否有配置错误,或者我只是不知道在哪里查找,但我似乎找不到我的文件存储这些配置的地方 我的计算机内也没有任何东西 我还尝试在中查找,但该位置没有volumes目录

  • 问题内容: 在做的选择谷歌浏览器,在那里我的文件系统做文件获取写的?在构建和调试此应用时,我想将文件放到那里并让Chrome与它们交互。 问题答案: 对我来说,至少在Mac OSX上,它们对于我来说存储在下面。如果您使用的是个人资料,则会有而不是的个人资料目录。但是,每个来源的已保存文件/文件夹都被混淆在您难以与之交互的目录下。 要调试Filesystem API,您可以选择以下几种方法: 使用此

  • 问题内容: 关闭redis服务器后,使用set存储的值被破坏,在这里我找到了使用持久性存储的方法,有人帮助我,如何使用javascript实现它? 我想将来自客户端的一些值存储在redis db中,并且必须在其他客户端中使用该值。 问题答案: 您需要配置Redis服务器以支持持久性机制。此配置存储在文件中,该文件在redis-server命令行上作为参数给出。 这是Redis 2.4的默认文件:h

  • 本平台是通过storageclass来动态创建PV。也就是说咱们依赖于storageclass,如果您的Kubernetes不支持相应的存储试,将无法非常方便的进行挂载。 目前暂不支持挂载多个PVC,或许以后会更新吧。 这里演示的是用的NFS进行演示,实际使用时可根据自己的需求配置相应的provisioner,其他配置是一样的不需要调整,只需要在“模版管理” 调整StorageClass和Pers

  • 持久化存储的相关配置 这里使用的是NFS的方式进行持久化,如果您有自己的持久化方案可以不使用改方案。 $ kubectl apply -f install/kubernetes/storage/serviceaccount.yaml $ kubectl apply -f install/kubernetes/storage/rbac.yaml $ kubectl apply -f install/