加载中

数据流

数据流充当了一组索引的抽象层,这些索引针对存储仅追加的时序数据进行了优化。它跨多个后端索引存储数据,同时为您提供单个命名资源用于请求。数据流非常适合日志、事件、指标和其他持续生成的数据。

您可以直接向数据流提交索引和搜索请求。数据流会自动将请求路由到存储该流数据的后端索引。您可以使用 索引生命周期管理 (ILM) 来自动化管理这些后端索引。例如,您可以使用 ILM 自动将较旧的后端索引移动到成本较低的硬件上,并删除不需要的索引。随着数据量的增长,ILM 可以帮助您降低成本和开销。

您还可以使用 数据流生命周期 根据您的保留要求自动化生命周期管理。

使用“数据流”管理数据流

从 Elastic Stack 9.2 版本开始,Streams(数据流) 页面在 Kibana 中提供了用于管理数据的集中式界面。它整合了常见的数据管理任务,无需手动配置多个应用程序和组件。一个“流”直接映射到一个 Elasticsearch 数据流,例如 logs-myapp-default。您在 Streams(数据流) 页面上所做的任何更改都会自动传播到关联的数据流。

有关更多信息,请参阅 在 Streams 页面上管理数据流

要确定您是否应该为数据使用数据流,您应该考虑数据的格式以及您的预期交互方式。使用数据流的一个良好候选对象将符合以下标准:

  • 您的数据包含一个时间戳字段,或者可以自动生成一个时间戳字段。
  • 您主要执行索引请求,偶尔进行更新和删除。
  • 您在索引文档时不指定 _id,或者在索引带有显式 _id 的文档时,您期望“先写入者胜”的行为。

对于大多数时序数据用例,数据流是一个很好的选择。但是,如果您发现您的数据不属于这些类别(例如,如果您频繁发送使用相同 _id 的多个文档并期望“后写入者胜”),您可能需要改用带有写入索引的索引别名。请参阅教程 在没有数据流的情况下管理时序数据 以获取更多信息。

请记住,某些功能(例如 时序数据流 (TSDS)数据流生命周期)需要数据流。

数据流由一个或多个 隐藏的、自动生成的后端索引组成。

data streams diagram

数据流需要一个匹配的 索引模板。该模板包含用于配置流后端索引的映射和设置,并定义了数据流使用的 ILM 策略。

索引到数据流的每个文档必须包含一个 @timestamp 字段,映射为 datedate_nanos 字段类型。如果索引模板未指定 @timestamp 字段的映射,Elasticsearch 会将 @timestamp 映射为带有默认选项的 date 字段。

同一个索引模板可用于多个数据流。您不能删除数据流正在使用的索引模板。

后端索引的命名模式是一个实现细节,不应从中推导任何逻辑含义。唯一不变的是每个数据流生成索引都将具有一个唯一的名称。

当您向数据流提交读取请求时,该流会将请求路由到其所有的后端索引。

data streams search request

最近创建的后端索引是该数据流的写入索引。流仅向此索引添加新文档。

data streams index request

您不能向其他后端索引添加新文档,即使是通过直接向索引发送请求也不行。

您也不能在写入索引上执行可能妨碍索引编制的操作,例如:

滚动 (Rollover) 会创建一个新的后端索引,该索引将成为流的新写入索引。

我们建议使用 ILM 在写入索引达到指定的存留期或大小时自动滚动数据流。如果需要,您也可以 手动滚动 数据流。

每个数据流都会跟踪其生成(Generation):一个六位、零填充的整数,从 000001 开始。

创建后端索引时,索引使用以下约定进行命名:

.ds-<data-stream>-<yyyy.MM.dd>-<generation>
		

<yyyy.MM.dd> 是后端索引的创建日期。生成编号较高的后端索引包含更新的数据。例如,web-server-logs 数据流的生成编号为 34。该流的最新后端索引创建于 2099 年 3 月 7 日,命名为 .ds-web-server-logs-2099.03.07-000034

某些操作(例如 收缩 (Shrink)恢复 (Restore))可能会更改后端索引的名称。这些名称更改不会将后端索引从其数据流中移除。

数据流的生成编号可能会在没有向数据流添加新索引的情况下发生变化(例如,当现有的后端索引被收缩时)。这意味着某些生成编号的后端索引可能永远不会存在。您不应从后端索引名称中推导任何逻辑含义。

数据流专为极少更新现有数据的用例而设计。您不能直接向数据流发送现有文档的更新或删除请求。但是,您仍然可以通过向文档的后端索引直接提交请求来 更新或删除 数据流中的文档。

如果您需要更新数据流中的大量文档,可以使用 通过查询更新 (update by query)通过查询删除 (delete by query) API。

提示

如果您频繁发送使用相同 _id 的多个文档并期望“后写入者胜”,则可能需要改用带有写入索引的索引别名。请参阅教程 在没有数据流的情况下管理时序数据

© . This website operates independently and is not affiliated with or endorsed by Elasticsearch B.V. All brand names, logos, and trademarks are the property of their respective owners.