滚动
编辑滚动编辑
在索引时间序列数据(如日志或指标)时,您无法无限期地写入单个索引。为了满足您的索引和搜索性能要求并管理资源使用情况,您会写入一个索引,直到达到某个阈值,然后创建一个新索引并开始写入它。使用滚动索引使您能够
- 优化活动索引以在高性能的热节点上实现高吞吐量。
- 优化温节点上的搜索性能。
- 将较旧的、访问频率较低的数据移至成本较低的冷节点,
- 根据您的保留策略删除数据,方法是删除整个索引。
我们建议使用 数据流 来管理时间序列数据。数据流会自动跟踪写入索引,同时将配置降至最低。
每个数据流都需要一个 索引模板,其中包含
- 数据流的名称或通配符 (
*
) 模式。 - 数据流的时间戳字段。此字段必须映射为
date
或date_nanos
字段数据类型,并且必须包含在索引到数据流的每个文档中。 - 创建每个支持索引时应用的映射和设置。
数据流专为仅追加数据而设计,其中数据流名称可用作操作(读取、写入、滚动、收缩等)目标。如果您的用例需要就地更新数据,则可以使用 索引别名 来管理时间序列数据。但是,还需要执行一些配置步骤和概念
- 一个索引模板,指定系列中每个新索引的设置。您会优化此配置以进行摄取,通常使用与热节点数量相同的碎片数。
- 一个索引别名,引用整个索引集。
- 一个被指定为写入索引的单个索引。这是处理所有写入请求的活动索引。在每次滚动时,新索引将成为写入索引。
当索引滚动时,先前索引的年龄会更新以反映滚动时间。此日期(而不是索引的 creation_date
)用于索引生命周期管理 min_age
阶段计算。 了解更多.
自动滚动编辑
ILM 和数据流生命周期(在 [预览] 此功能处于技术预览阶段,可能会在将来的版本中更改或删除。Elastic 将努力解决任何问题,但技术预览中的功能不受官方 GA 功能支持 SLA 的约束。 ]) 使您能够根据索引大小、文档数量或年龄等条件自动滚动到新索引。当触发滚动时,会创建一个新索引,写入别名会更新为指向新索引,所有后续更新都将写入新索引。
根据大小、文档数量或年龄滚动到新索引比基于时间的滚动更可取。在任意时间滚动通常会导致许多小型索引,这会对性能和资源使用情况产生负面影响。
空索引不会滚动,即使它们具有关联的 max_age
,否则会导致滚动发生。策略可以通过添加 "min_docs": 0
条件来覆盖此行为,并明确选择加入滚动空索引。这也可以通过将 indices.lifecycle.rollover.only_if_has_documents
设置为 false
来在集群范围内禁用。
如果一个或多个分片包含 200000000 个或更多文档,则滚动操作会隐式地始终滚动数据流或别名。通常,分片在达到 200M 个文档之前很久就会达到 50GB,但这对于空间效率高的数据集来说并非如此。如果分片包含超过 200M 个文档,则搜索性能很可能会受到影响。这是内置限制的原因。