Elasticsearch Template

2022-12-01 21:31:59 浏览数 (1)

Elasticsearch Template

Elasticsearch 7.8引入了一种更为灵活的组合索引模板(composable index template),以代替旧版索引模板(legacy template)。本文所描述的就是新版组合索引模板。

索引模板是一种告诉Elasticsearch在创建索引时如何配置索引的方法。通常,为了更精细地配置索引相关信息,我们会在创建索引之前先行配置一个索引模板;然后在手动创建索引或通过索引文档创建索引时,索引模板将自动应用于该索引。

索引模板有两种类型,索引模板(index template)和组件模板(component template)。组件模板是可重用的构建块,用于配置mapping、setting和alias。组件模板不能直接应用于索引,组件模板只能由索引模板引用,而恰恰只有索引模板才能直接应用于索引。当然,索引模板不一定必须引用组件模板才行,你也可以直接定义mappingsettingalias

1 内置模板

Elasticsearch分别内置了若干索引模板和组件模板,我们可以分别通过GET /_index_templateGET /_component_template REST API查看这些模板内容。索引模板是有优先级属性的,而组件模板没有,为什么呢?因为组件模板只是一种底层可复用的模板构建块,要想应用于索引,还是需要通过索引模板来包装;如果自定义索引模板的索引模式(index_patterns)与内置索引模板一致,那么请确保优先级不一致,具体地,如果想覆盖该内置索引模板,请确保自定义索引模板的优先级值大于100。

1.1 内置索引模板

  • metrics,其应用于metrics-*-*模式索引
  • logs,其应用于logs-*-*模式索引

1.2 内置组件模板

  • metrics-mappings
  • metrics-settings
  • logs-mappings
  • logs-settings

2 模板优先级

explicit settings from the create index request > index template > legacy template

3 模板REST API

3.1 新增/更新

3.1.1 索引模板
代码语言:javascript复制
PUT /_index_template/<index-template-name>

请求体内容:

属性

是否必须

描述

默认值

index_patterns

通配符表达式「数组」,用于匹配数据流和索引的名称

template

×

索引模板内容,可以包含mappings、settings和aliases信息

composed_of

×

组件模板名称「数组」

priority

×

模板优先级,正整数

0

version

×

索引模板版本号

_meta

×

索引模板的元数据,可以是任何内容

示例一
代码语言:javascript复制
PUT /_index_template/index-template-name-000001
{
    "index_patterns": [
        "t*"
    ],
    "priority": 0,
    "template": {
        "settings": {
            "number_of_shards": 1,
            "number_of_replicas": 0
        },
        "mappings": {
            "_source": {
                "enabled": false
            }
        }
    }
}
示例二
代码语言:javascript复制
PUT /_index_template/index-template-name-000001
{
    "index_patterns": [
        "t*"
    ],
    "composed_of": [
        "template_with_2_shards",
        "template_with_3_shards"
    ]
}
3.1.2 组件模板
代码语言:javascript复制
PUT /_component_template/<component-template-name>

请求体内容:

属性

是否必须

描述

默认值

template

组件模板内容,可以包含mappings、settings和aliases信息

version

×

组件模板版本号

_meta

×

组件模板的元数据,可以是任何内容

代码语言:javascript复制
PUT /_component_template/component-template-000001
{
    "template": {
        "settings": {
            "number_of_shards": 1
        },
        "aliases": {
            "alias1": {},
            "alias2": {
                "filter": {
                    "term": {
                        "user.id": "kimchy"
                    }
                },
                "routing": "shard-1"
            },
            "{index}-alias": {}
        }
    },
    "version": 1
}

3.2 删除

3.2.1 索引模板
代码语言:javascript复制
DELETE /_index_template/<index-template-name>
3.2.2 组件模板
代码语言:javascript复制
DELETE /_component_template/<component-template-name>

3.3 查询

3.3.1 索引模板
代码语言:javascript复制
GET /_index_template/<index-template-name>
3.3.2 组件模板
代码语言:javascript复制
GET /_component_template/<component-template-name>

0 人点赞