Обновление значения по умолчанию index_of_replicas для новых индексов

Я попытался обновить количество реплик следующим образом, в соответствии с документацией

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

Да, вы можете использовать шаблоны индексов. Шаблоны индексов - отличный способ установить настройки по умолчанию (включая сопоставления) для новых индексов, созданных в кластере.

Шаблоны индексов

Шаблоны индексов позволяют определять шаблоны, которые будут автоматически применяется к новым созданным индексам. Шаблоны включают обе настройки и сопоставления, и простой шаблон шаблона, который управляет, если шаблон будет применен к созданному индексу.

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- *". Обратите внимание, что это не изменит существующие индексы, только новые созданные.