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

Joe*_*lor 12 elasticsearch logstash

根据文档,我已经尝试按如下方式更新副本数量

curl -XPUT 'localhost:9200/_settings' -d '
{ "index" : { "number_of_replicas" : 4 } }'
Run Code Online (Sandbox Code Playgroud)

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

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

FWIW我也试过了

curl -XPUT 'localhost:9200/logstash-*/_settings' -d '
{ "index" : { "number_of_replicas" : 4 } }'
Run Code Online (Sandbox Code Playgroud)

无济于事.

Joh*_*one 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 }
} '
Run Code Online (Sandbox Code Playgroud)

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