#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. Заранее спасибо!