索引模板 #
索引模板允许您使用预定义的映射和设置初始化新索引。例如,如果连续索引日志数据,可以定义一个索引模板,以便所有这些索引都具有相同数量的碎片和副本。
创建模板 #
要创建索引模板,请使用 POST 请求:
POST _index_template
此命令创建一个名为 daily_logs
的模板,并将其应用于名称与正则表达式 logs-2023-01-*
匹配的任何新索引,还将其添加到 my_log
别名中:
PUT _index_template/daily_logs
{
"index_patterns": [
"logs-2023-01-*"
],
"template": {
"aliases": {
"my_logs": {}
},
"settings": {
"number_of_shards": 2,
"number_of_replicas": 1
},
"mappings": {
"properties": {
"timestamp": {
"type": "date",
"format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
},
"value": {
"type": "double"
}
}
}
}
}
您应该看到以下响应:
{
"acknowledged": true
}
如果创建名为 logs-2023-01-01
的索引,可以看到它具有模板中的映射和设置:
PUT logs-2023-01-01
GET logs-2023-01-01
{
"logs-2023-01-01": {
"aliases": {
"my_logs": {}
},
"mappings": {
"properties": {
"timestamp": {
"type": "date",
"format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
},
"value": {
"type": "double"
}
}
},
"settings": {
"index": {
"creation_date": "1673588860779",
"number_of_shards": "2",
"number_of_replicas": "1",
"uuid": "S1vMSMDHSAuS2IzPcOHpOA",
"version": {
"created": "7110199"
},
"provided_name": "logs-2023-01-01"
}
}
}
}
与此模式匹配的任何其他索引— logs-2023-01-02
、 logs-2033-01-03
等— 都将继承相同的映射和设置。
检索模板 #
要列出所有索引模板,请执行以下操作:
GET _cat/templates
要按名称查找模板,请执行以下操作:
GET _index_template/daily_logs
要获取所有模板的列表,请执行以下操作:
GET _index_template/daily_logs
要获取与模式匹配的所有模板的列表,请执行以下操作:
GET _index_template/daily*
要检查是否存在特定模板,请执行以下操作:
HEAD _index_template/<name>
配置多个模板 #
您可以为索引创建多个索引模板。如果索引名称与多个模板匹配,Easysearch 将合并所有匹配模板中的所有映射和设置,并将其应用于索引。
最近创建的索引模板中的设置将覆盖旧索引模板的设置。因此,您可以首先在通用模板中定义一些通用设置,这些通用模板可以充当一个包罗万象的模板,然后根据需要添加更多专用设置。
更好的方法是使用 order
参数显式指定模板优先级。Easysearch 首先应用优先级较低的模板,然后使用优先级较高的模板覆盖它们。
例如,假设您有以下两个模板都与 logs-2023-01-02
索引匹配,并且 number_of_shards
字段中存在冲突:
Template 1 #
PUT _index_template/template-01
{
"index_patterns": [
"logs*"
],
"priority": 0,
"template": {
"settings": {
"number_of_shards": 2
}
}
}
Template 2 #
PUT _index_template/template-02
{
"index_patterns": [
"logs-2023-01-*"
],
"priority": 1,
"template": {
"settings": {
"number_of_shards": 3
}
}
}
由于 template-02
具有较高的 priority
值,因此它优先于 template-01
。 logs-2023-01-02
索引的 number_of_shards
值为 3 。
删除模板 #
可以使用索引模板的名称删除索引模板,如以下命令所示:
DELETE _index_template/daily_logs
索引模板选项 #
您可以指定下表中显示的选项:
Option | Type | Description | Required |
---|---|---|---|
priority | Number | 指定索引模板的优先级。 | No |
create | Boolean | 指定此索引模板是否应替换现有模板。 | No |