概述
Elastic Stack Serverless
- 所有转换都会保留您的源索引不变。它们会创建一个新的索引,专门用于转换后的数据。
- 与 Kibana 中可用的选项相比,转换可能具有 API 提供的更多配置选项。有关所有转换配置选项,请参阅 API 文档。
转换是持久性任务;它们存储在集群状态中,这使其能够应对节点故障。请参阅 检查点如何工作 和 错误处理,以了解有关转换背后机制的更多信息。
您可以使用转换将您的数据透视到新的以实体为中心的索引中。通过转换和汇总您的数据,可以以替代和有趣的方式对其进行可视化和分析。
许多 Elasticsearch 索引都组织为事件流:每个事件都是一个单独的文档,例如单个商品购买。转换使您可以汇总此数据,将其转换为有组织的、更便于分析的格式。例如,您可以汇总单个客户的所有购买。
转换使您可以定义透视,这是一组将索引转换为不同且更易于理解的格式的功能。透视会在新索引中生成数据的摘要。
要定义透视,首先选择一个或多个将用于对数据进行分组的字段。您可以选择分类字段(术语)和数字字段进行分组。如果使用数字字段,则使用您指定的间隔对字段值进行分桶。
第二步是决定如何聚合分组的数据。使用聚合时,实际上是在询问有关索引的问题。有不同类型的聚合,每种聚合都有其自己的目的和输出。要了解有关支持的聚合和分组依据字段的更多信息,请参阅 创建转换。
作为可选步骤,您还可以添加一个查询以进一步限制聚合的范围。
转换执行复合聚合,该聚合会分页浏览源索引查询定义的所有数据。聚合的输出存储在目标索引中。每次转换查询源索引时,它都会创建一个检查点。您可以决定是要让转换运行一次还是连续运行。批量转换是具有单个检查点的单个操作。连续转换会随着新源数据的摄取不断递增和处理检查点。
假设您经营一家销售服装的网上商店。每个订单都会创建一个包含唯一订单 ID、所订购产品的名称和类别、其价格、订购数量、确切订购日期以及一些客户信息(姓名、性别、位置等)的文档。您的数据集包含去年所有交易。
如果您想查看上个财政年度不同类别的销售额,请定义一个转换,该转换按产品类别(女士鞋、男士服装等)和订单日期对数据进行分组。使用去年作为订单日期的间隔。然后对订购数量添加总和聚合。结果是一个以实体为中心的索引,显示去年每个产品类别中售出的商品数量。

您可以使用 latest
类型的转换将最新的文档复制到新索引中。您必须将一个或多个字段标识为用于对数据进行分组的唯一键,以及一个按时间顺序对数据进行排序的日期字段。例如,您可以使用此类型的转换来跟踪每个客户的最新购买或每个主机的最新事件。

与透视的情况一样,最新转换可以运行一次或连续运行。它对源索引中的数据执行复合聚合,并将输出存储在目标索引中。如果转换连续运行,则新的唯一键值会自动添加到目标索引中,并且每个检查点都会自动更新现有键值的最新文档。
转换对源索引执行搜索聚合,然后将结果编入目标索引。因此,转换永远不会比聚合和索引过程花费更少的时间或使用更少的资源。
如果您的转换必须处理大量历史数据,则最初的资源使用率很高,尤其是在第一个检查点期间。
为了获得更好的性能,请确保您的搜索聚合和查询已优化,并且您的转换仅处理必要的数据。考虑是否可以对转换应用源查询以减少其处理的数据范围。还要考虑集群是否具有足够的资源来支持复合聚合搜索和索引其结果。
如果您希望分散对集群的影响(以降低转换速度为代价),则可以限制其执行搜索和索引请求的速率。在您创建或更新转换时,设置 docs_per_second
限制。如果您想计算当前速率,请使用来自 get transform stats API 的以下信息
documents_processed / search_time_in_ms * 1000