web-dev-qa-db-ja.com

新しいインデックスのデフォルトのインデックスnumber_of_replicas設定を更新する

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

無駄に。

12
Joe Taylor

はい、インデックステンプレートを使用できます。インデックステンプレートは、クラスターで作成された新しいインデックスのデフォルト設定(マッピングを含む)を設定するための優れた方法です。

インデックステンプレート

インデックステンプレートを使用すると、作成された新しいインデックスに自動的に適用されるテンプレートを定義できます。テンプレートには、設定とマッピングの両方、および作成されたインデックスにテンプレートを適用するかどうかを制御する単純なパターンテンプレートが含まれています。

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に設定されます。これにより、既存のインデックスは変更されず、新しく作成されたインデックスのみが変更されることに注意してください。

27
John Petrone