Elasticsearch Index templates

 

Index templates 有2种:

component templates 可重用的构建块,用于配置settings, mappings, and aliases。虽然可以使用组件模板构造索引模板,但它们不会直接应用于一组索引。

Index templates 索引模板可以包含component templates的集合,也可以直接指定settings, mappings, and aliases。

 

以下条件适用于 index templates:

  • Composable templates 优先于 legacy templates(旧的模板方式). 如果没有composable template匹配,  legacy template 将被应用.
  • 如果index的settings是配置了的,那么settings的优先级高于index template 和 component templates.
  • 如果一个新的data stream 或 index 可以匹配多个index template, 将选择优先级最高的index template.

Elasticsearch内置了以下模板,他们用于Elasticsearch自身,优先级是100:

logs-*-*
metrics-*-*
synthetics-*-*

为了避免冲突,最好把自定义的模板跟内置模板的命名区分开。

以下创建2个component templates

PUT _component_template/component_template1
{
  "template": {
    "mappings": {
      "properties": {
        "@timestamp": {
          "type": "date"
        }
      }
    }
  }
}

PUT _component_template/runtime_component_template
{
  "template": {
    "mappings": {
      "runtime": { 
        "day_of_week": {
          "type": "keyword",
          "script": {
            "source": "emit(doc['@timestamp'].value.dayOfWeekEnum.getDisplayName(TextStyle.FULL, Locale.ROOT))"
          }
        }
      }
    }
  }
}

以下创建Index templates 并把component_template1, runtime_component_template作为组件

PUT _index_template/template_1
{
  "index_patterns": ["te*", "bar*"],
  "template": {
    "settings": {
      "number_of_shards": 1
    },
    "mappings": {
      "_source": {
        "enabled": true
      },
      "properties": {
        "host_name": {
          "type": "keyword"
        },
        "created_at": {
          "type": "date",
          "format": "EEE MMM dd HH:mm:ss Z yyyy"
        }
      }
    },
    "aliases": {
      "mydata": { }
    }
  },
  "priority": 500,
  "composed_of": ["component_template1", "runtime_component_template"], 
  "version": 3,
  "_meta": {
    "description": "my custom"
  }
}

 

 

 

posted on 2021-10-27 16:33  icodegarden  阅读(553)  评论(0编辑  收藏  举报