《Elastic Stack 实战手册》——三、产品能力——3.5 进阶篇——3.5.6.Datastream (4) https://developer.aliyun.com/article/1228580
关于修改 data stream 的 mapping 和 setting
data stream 的 setting 和 mapping 修改主要还是基于 Elasticsearch 默认的修改规则。总结一下,主要有以下几点:
l 新增字段不影响。
l 已存在的配置不可更改。
l 修改的 template 只能应用于未来新增的索引。
因此,如果需要修改不可更改的配置,可以考虑 reindex 或者修改 template 后手工Rolloverdata stream。
关于 Data tiers
Data tiers 也称数据层,是一个在 7.10 版本的一个新概念。
Data tiers 主要的一个特点是将节点角色( node roles )与索引生命周期所需要的节点属性( attribute )结合,直接可以在制定 Elasticsearch 节点角色时配置,不需要再去设置
attribute 。Data tiers 的概念也是对时序性数据分层管理的优化配置。
Data tiers 的数据节点默认是都配置的,即 data_content/data_hot/data_warm/data_cold( chsw )都具备。
Tiers 的定义
Content tier
Content tier 节点存储的数据,往往定义为与时序性数据相反的常态化数据,比如商品种类这种随着时间推移保持相对不变。这种数据并不能根据冷热数据性质分层存储。
此类数据有以下特点:
l Content tier 节点通常需要较高的计算性能,要求处理能力比 IO 吞吐能力高,需要处理复杂的搜索和聚合并快速返回结果。
l 对数据内容的获取,即文档内容本身获取比时序性数据要少。
l 这类数据索引需要配置为一个或多个副本。
Hot tier
Hot tier,热层是时间序列数据的 Elasticsearch 入口点,最新存储的时间序列数据。Hot tier 的数据也是会被查询最多的数据。因此热层中的节点在读取和写入时都需要快速,这需要更多的硬件资源和更快的存储( SSD )。属于数据流 ( Data stream )的新索引会自动分配给热层。
Warm tier
即温层,一旦查询时间序列数据的频率低于 hot tier 中最近索引的数据,便可以将其移至
warm tier 。 warm tier 通常保存最近几周的数据。 仍然允许进行更新,但可能很少。通常,warm tier 中的节点不需要像 hot tier 中的节点一样快。
Cold tier
冷层的数据一般查询频率非常低,且不会被更新。 但是 cold tier 仍然是响应查询层。 随着数据过渡到 cold tier,可以对其进行压缩和去副本。Cold tier节点的机器配置可以相对较低。
tier_preference
index.routing.allocation.include._tier_preference 是 Data tiers 的主要配置方式,在分片数据的时候使用 tier_preference 指定数据节点的分配。
tier_preference 的设置会有三种情况:
l 创建正常索引时,默认情况下,Elasticsearch 将 index.routing.allocation.include._tier_preference 设置为 data_content ,以将索引分片自动分配给内容层。
l 创建数据流时,Elasticsearch 会将后备索引的 index.routing.allocation.include._tier_preference 设置为 data_hot,以自动将索引分片分配给热层。
l 显式设置 index.routing.allocation.include._tier_preference,选择索引需要的数据节点。 如果将层首选项设置为 null,则 Elasticsearch 在分配期间将忽略数据层角色,依照其它参数分配。
相关的图形和命令配置如下:
上图时在索引生命周期管理中选择 Data tiers节点。
PUT _index_template/template_demo { "index_patterns": ["demo-*"], "data_stream": {}, "priority": 200, "template": { "settings": { "number_of_shards": 2, "index.lifecycle.name": "demo", "index.routing.allocation.include._tier_preference": "data_hot" } } }
上面命令中设置索引模板匹配 demo-* 的索引的分配策略为 "index.routing.allocation.include._tier_preference":"data_hot"
创作人简介:
赵凯,平时喜欢阅读 elastic 官网,对 Elasticsearch 较为熟悉。 学习一门技术,官网永远是最好的学习文档。在西安,我们也建立了自己的圈子,欢迎西安的小伙伴们一起交流,共同进步。