更新新索引的默认索引number_of_replicas设置

时间:2014-07-03 12:29:01

标签: elasticsearch logstash

根据documentation

,我尝试按如下方式更新副本数量
curl -XPUT 'localhost:9200/_settings' -d '
{ "index" : { "number_of_replicas" : 4 } }'

这正确地更改了现有节点的副本计数。但是,当logstash在第二天创建新索引时,number_of_replicas将设置为旧值。

有没有办法永久更改此设置的默认值而不更新群集中的所有elasticsearch.yml文件并重新启动服务?

FWIW我也试过

curl -XPUT 'localhost:9200/logstash-*/_settings' -d '
{ "index" : { "number_of_replicas" : 4 } }'

无济于事。

1 个答案:

答案 0 :(得分:27)

是的,您可以使用索引模板。索引模板是为群集中创建的新索引设置默认设置(包括映射)的好方法。

  

索引模板

     

索引模板允许定义自动生成的模板   适用于创建的新指数。模板包括两个设置   和映射,以及一个简单的模式模板,控制是否   模板将应用于创建的索引。

http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/indices-templates.html

对于你的例子:

curl -XPUT 'localhost:9200/_template/logstash_template' -d ' 
{ 
  "template" : "logstash-*", 
  "settings" : {"number_of_replicas" : 4 }
} '

这将为所有与名称匹配的新索引设置默认的副本数量为4#logstash - *"。请注意,这不会更改现有索引,只会更改新创建的索引。