当您使用 Elasticsearch 索引模板时,可以为新创建的索引指定一组默认的映射和设置,而无需手动为每个新索引设置相同的设置。以下是一些索引模板的示例用途和作用:
- 默认映射和设置
假设您的应用程序需要存储大量的日志数据,并且您希望将其存储在 Elasticsearch 中以便进行搜索和分析。在这种情况下,您可以创建一个索引模板,将其中包含的默认映射应用于所有新创建的索引。例如,以下索引模板将日期类型映射应用于所有新索引:
PUT _template/logs_template { "index_patterns": ["logs-*"], "settings": { "number_of_shards": 1 }, "mappings": { "properties": { "timestamp": { "type": "date" } } } }
此模板定义了一个匹配 logs-*
模式的索引模板,它将在所有 logs-*
开头的新索引中应用。该模板定义了默认的 number_of_shards
设置为 1,并为 timestamp
字段定义了日期类型的映射。
- 自动设置别名
假设您的应用程序需要使用别名来引用多个索引,并且您希望自动将新创建的索引添加到特定的别名中。在这种情况下,您可以创建一个索引模板,并在其中指定要自动添加到别名的索引。例如,以下索引模板将新创建的索引自动添加到名为 logs
的别名中:
PUT _template/logs_template { "index_patterns": ["logs-*"], "aliases": { "logs": {} } }
此模板定义了一个匹配 logs-*
模式的索引模板,它将在所有 logs-*
开头的新索引中应用。该模板定义了一个别名 logs
,它将自动添加到所有新索引中。
- 根据索引名称匹配规则
假设您的应用程序需要存储来自不同客户的数据,并且您希望根据客户名称将数据存储在不同的索引中。在这种情况下,您可以创建一个索引模板,并在其中指定匹配索引名称的规则。例如,以下索引模板将新创建的索引自动命名为 customer-<customer_id>
,其中 <customer_id>
是从索引名称中提取的值:
PUT _template/customer_template { "index_patterns": ["customer-*"], "settings": { "number_of_shards": 1 }, "mappings": { "properties": { "timestamp": { "type": "date" } } }, "index_patterns": [ "customer-*" ], "index": { "routing": { "required": true, "path": "customer_id"