参考

Data Streams

数据流

数据流允许您跨多个索引存储仅追加时序数据,同时为请求提供单个命名资源。数据流非常适合日志、事件、指标和其他连续生成的数据。
您可以将索引和搜索请求直接提交到数据流。流会自动将请求路由到存储流数据的后备索引。您可以使用索引生命周期管理 (ILM) 来自动化这些后备索引的管理。例如,您可以使用 ILM 自动将较旧的后备索引移动到较便宜的硬件,并删除不需要的索引。ILM 可以帮助您随着数据的增长降低成本和开销。

支持指数

数据流由一个或多个隐藏的、自动生成的支持索引组成。
ES之数据流(Data Stream) - 图1
数据流需要匹配的索引模板。该模板包含用于配置流的后备索引的映射和设置。
索引到数据流的每个文档都必须包含一个字段,该字段映射为日期date_nanos字段类型。如果索引模板未指定字段的映射,则 Elasticsearch 将映射为具有默认选项的字段。@timestamp@timestamp@timestampdate
同一索引模板可用于多个数据流。不能删除数据流正在使用的索引模板。

读取请求

当您向数据流提交读取请求时,该流会将请求路由到其所有支持索引。
ES之数据流(Data Stream) - 图2

写入索引

最近创建的后备索引是数据流的写入索引。该流仅将新文档添加到此索引。
ES之数据流(Data Stream) - 图3
您无法将新文档添加到其他支持索引,即使将请求直接发送到索引也是如此。
您也不能对写入索引执行可能妨碍索引的操作,例如:

  • 克隆
  • 删除
  • 收缩
  • 分裂

    过渡

    滚动更新会创建一个新的后备索引,该索引将成为流的新写入索引。
    我们建议使用 ILM 在写入索引达到指定的期限或大小时自动滚动更新数据流。如果需要,还可以手动滚动浏览数据流。

    每个数据流都跟踪其生成:一个六位数、零填充的整数,用作流滚动更新的累积计数,从 开始。000001
    创建后备索引时,将使用以下约定命名该索引:
    1. .ds-<data-stream>-<yyyy.MM.dd>-<generation>
    是支持索引的创建日期。具有较高世代的支持索引包含更新的数据。例如,数据流具有 一代 。该流的最新支持索引创建于 2099 年 3 月 7 日,名为 。web-server-logs34.ds-web-server-logs-2099.03.07-000034
    某些操作(如收缩还原)可能会更改支持索引的名称。这些名称更改不会从其数据流中删除后备索引。

    仅追加

    数据流是为现有数据很少(如果有的话)更新的用例而设计的。不能将现有文档的更新或删除请求直接发送到数据流。相反,请使用按查询更新按查询 API 删除
    如果需要,您可以通过直接向文档的支持索引提交请求来更新或删除文档。