В большем случае у большинства index в вашем кластере одни и те же настройки (количество реплик, количество shards и т.д). И желание не настраивать каждый index отдельно является естественным, зачем вам тратить драгоценное время на такую ерунду. И такую процедуру в Elasticsearch можно автоматизировать. Для этого применяется шаблоны (Templates).

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

Создание шаблона (template)

Для создания или удаления шаблонов (templates) используется _template.

Пример создания шаблона:

PUT _template/my-index-template
{
  "index_patterns": "my-*",
  "order": 1,
  "settings": {
    "number_of_shards": 3,
    "number_of_replicas": 2
  },
  "mappings": {
    "properties": {
      "@timestamp": {
        "type": "date"
      }
    }
  }
}
  • index_patterns - к какому index применять шаблон (может принимать pattern)
  • order - приоритет шаблона, чем выше, тем приоритетнее
  • settings - собственно сами настройки index
  • my-index-template - название шаблона, может быть любым

Множественные шаблоны

Внимательные читатели уже, наверное, догадались о чём пойдёт речь. Бывает необходимость применить множественные шаблоны, т.е к одному index применить несколько шаблонов.

На то какой именно из шаблонов примениться к index влияет order, о котором я уже упомянул выше. По умолчанию он выставляется в значение 1. Если у вас несколько шаблонов с разным order то примениться тот шаблон, у которого order выше.

PUT _template/my-index-template
{
  "index_patterns": "my-*",
  "order": 5,
  "settings": {
    "number_of_shards": 10,
    "number_of_replicas": 1
  },
  "mappings": {
    "properties": {
      "@timestamp": {
        "type": "date"
      }
    }
  }
}

PUT my-index-v1

GET my-index-v1

{
  "my-index-v1": {
  ..........
    "properties": {
      "@timestamp": {
        "type": "date"
      }
	  ...............
        "number_of_shards": 10,
		 "number_of_replicas": 1
	......................