【问题标题】:Updating the default index number_of_replicas setting for new indices更新新索引的默认索引 number_of_replicas 设置
【发布时间】:2014-07-03 12:29:00
【问题描述】:

我已经尝试按照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 } }'

无济于事。

【问题讨论】:

    标签: elasticsearch logstash


    【解决方案1】:

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

    索引模板

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

    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 }
    } '
    

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

    【讨论】:

    • (至少 ES 5.2)除了不要使用 PUT;假设那里已经有一个模板(例如filebeat),你就会覆盖它。要么使用 POST(如果支持),要么首先 GET 整个模板作为 JSON 文档,编辑它,然后 PUT。
    • PUT 不会覆盖,如上面的评论中所述。使用 PUT 是安全的,文档中有使用 PUT 的示例。
    • 有没有办法在我的 filebeat 输出中为 elasticsearch 设置这个?我不想创建 curl 请求。提前致谢!
    猜你喜欢
    • 1970-01-01
    • 2017-07-25
    • 1970-01-01
    • 2016-04-25
    • 2020-03-07
    • 1970-01-01
    • 2018-12-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多