在 elasticsearch.yml 配置文件中使用 env 时如何设置默认值?

Posted

技术标签:

【中文标题】在 elasticsearch.yml 配置文件中使用 env 时如何设置默认值?【英文标题】:How to set default value while using env in elasticsearch.yml config file? 【发布时间】:2021-08-28 08:47:31 【问题描述】:

我在配置文件(即elasticsearch.yml)中使用环境变量来配置节点角色。

例如:

elasticsearch.yml:

node.roles: '$NODE_ROLES'

什么时候,我设置了NODE_ROLES="master"NODE_ROLES="ml, remote_cluster_client"等。它们按预期工作。

但是,当我尝试通过设置NODE_ROLES="" 创建一个协调 节点时,它似乎不起作用。显示所有节点角色都分配给协调节点。

$ curl -XGET -k -u 'elastic:XpBr*PVVgPa&zK5M' "https://localhost:9200/_cat/nodes?v"
ip        heap.percent ram.percent cpu load_1m load_5m load_15m node.role   master name
10.2.2.23           59          74  42    2.40    1.83     1.23 m           -      es-master-0
... ... ..
10.2.0.18           69           2  19    0.78    0.48     0.33 cdfhilmrstw -      es-coordinating-0

我也试过像下面这样设置默认值,它们也没有用。

node.roles: '$NODE_ROLES:""'
or 
node.roles: '$NODE_ROLES:[]'

【问题讨论】:

【参考方案1】:

两种方式:

node.roles: []

https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-node.html#coordinating-node

或者您可以按名称手动禁用每个角色。

node.data: false
node.injest: false
node.master: false 
// etc..

node.role、r、角色、nodeRole (默认)节点的角色。返回值包括c(冷节点)、d(数据节点)、f(冻结节点)、h(热节点)、i(摄取节点)、l(机器学习节点)、m(主节点)、r(远程集群客户端节点)、s(内容节点)、t(转换节点)、v(仅投票节点)、w(温节点)和 -(仅协调节点)。

https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-nodes.html

【讨论】:

node.data: true/false 已被弃用,在 > 7.13 版本中不受支持。 我需要通过 ENV 配置node.roles: []。请告诉我,我该如何实现它。

以上是关于在 elasticsearch.yml 配置文件中使用 env 时如何设置默认值?的主要内容,如果未能解决你的问题,请参考以下文章

elasticsearch多实例怎么配置

elasticsearch配置文件详解

elasticsearch配置文件详解

elasticsearch 配置详解

Elasticsearch配置参数介绍

ElasticSearch 配置详解