Обновление параметра index number_of_replicas по умолчанию для новых индексов

#elasticsearch #logstash

#elasticsearch #logstash

Вопрос:

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

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

Комментарии:

1. (По крайней мере, ES 5.2), За исключением того, что для этого не используйте PUT ; предполагая, что там уже был шаблон (например, filebeat), вы бы просто переписали его. Либо используйте POST (если поддерживается), либо сначала ПОЛУЧИТЕ весь шаблон в виде документа JSON, отредактируйте его, а затем ПОМЕСТИТЕ.

2. PUT не перезаписывается, как упоминалось в комментарии выше. Безопасно использовать PUT, в документах есть примеры использования PUT.

3. Есть ли способ, которым я могу установить это и в своих выходных данных filebeat для elasticsearch? Я не хочу создавать запросы curl. Заранее спасибо!