一、ES索引模板别名
ES中的索引模板可通过别名来标识。别名是一个指向一个或多个索引的不变名称,可以在查询时使用,并可动态的为当前索引选择别名
PUT /_aliases { "actions": [ { "add": { "index": "my_index", "alias": "my_index_alias" } } ] }
在上述代码中,"my_index"是被操作的索引名称,"my_index_alias"是为它定义的别名
二、ES索引模板创建
创建索引模板的过程是创建和定义具有相似字段和属性结构的ES索引的一种简单方法
PUT _template/template_1 { "index_patterns": ["te*", "bar*"], "settings": { "number_of_shards": 1 }, "mappings": { "_doc": { "_source": { "enabled": false }, "properties": { "host_name": { "type": "keyword" }, "created_at": { "type": "date", "format": "EEE MMM dd HH:mm:ss Z yyyy" } } } } }
示例代码中匹配任何以 'te' 或 'bar'为前缀开头的索引,索引只有一个分片,'_doc'是类型名称,mappings下定义了字段名称、数据类型和格式等属性
三、ES索引模板设置别名
在ES索引模板中可以将别名分配给多个索引模式,这通常用于设置别名,以便它们可以在相似的索引之间灵活切换
PUT _template/template_1 { "index_patterns": ["te*", "bar*"], "aliases": { "alias_1": {}, "alias_2": { "filter": { "term": {"user": "kimchy"} }, "routing": "kimchy" } } }
在上述代码中,除基本索引数据结构之外,还定义了“alias_1”和“alias_2”两个别名,其中“alias_2”定义了一些过滤规则和路由信息
四、ES索引模板查询
ES索引模板可以使用索引模板名称或者索引模式(用于匹配动态创建的索引)进行查询
GET _template/template_1 GET _template/te*
五、ES索引模板使用场景
索引模板允许我们为一组索引指定相同的映射、设置和别名。我们可以使用这种方法进行索引自动化创建、更新、删除等操作
六、ES索引模板模糊匹配字段名称
在索引模板中,可以使用通配符模式定义字段名
PUT _template/template_1 { "index_patterns": ["*"], "log-*": { "properties": { "tags": { "type": "keyword" }, "message": { "type": "text" } } } }
在上述代码中,“log-*”表示只匹配名称以“log-”开头的所有索引模板
七、ES索引模板删除
删除索引模板是一个简单的操作,只需要选择要删除的索引模板并该操作即可
DELETE _template/template_1
八、ES索引模板丢失
当索引创建失败时,有时会忘记指定映射信息。这样,将使用默认的Elasticsearch映射。当尝试在此类索引中调用没有映射的字段时,将在丢失的映射字段中得到错误
九、ES索引模板没生效
当在映射和模板定义期间进行更改时,请记得删除索引并重新创建新的索引。反映更改后的映射和模板定义
ES索引模板是一个非常有用的工具,它可以让我们根据需要快速定义和更新索引结构。以上是关于ES索引模板的一些重要知识点及对应代码示例。