索引模板
> 文档中心 > 文档中心 > INFINI Easysearch > 功能手册 > 管理模块 > 索引模板

索引模板 #

索引模板允许您使用预定义的映射和设置初始化新索引。例如,如果连续索引日志数据,可以定义一个索引模板,以便所有这些索引都具有相同数量的碎片和副本。

创建模板 #

要创建索引模板,请使用 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-02logs-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-01logs-2023-01-02 索引的 number_of_shards 值为 3 。

删除模板 #

可以使用索引模板的名称删除索引模板,如以下命令所示:

DELETE _index_template/daily_logs

索引模板选项 #

您可以指定下表中显示的选项:

OptionTypeDescriptionRequired
priorityNumber指定索引模板的优先级。No
createBoolean指定此索引模板是否应替换现有模板。No