转换概述

编辑

您可以选择以下任一方法来转换数据:透视最新

  • 所有转换都保留您的源索引不变。它们会创建一个新的索引,专门用于存储转换后的数据。
  • 与 Kibana 中提供的选项相比,转换可能具有 API 提供的更多配置选项。有关所有转换配置选项,请参阅 API 文档

转换是持久性任务;它们存储在集群状态中,这使它们能够应对节点故障。请参阅 检查点如何工作错误处理,以了解有关转换背后机制的更多信息。

透视转换

编辑

您可以使用转换将数据透视到新的以实体为中心的索引中。通过转换和汇总数据,可以以其他有趣的方式进行可视化和分析。

许多 Elasticsearch 索引都组织为事件流:每个事件都是一个单独的文档,例如单个商品购买。转换使您可以汇总这些数据,将其转化为有组织、更适合分析的格式。例如,您可以汇总单个客户的所有购买。

转换使您可以定义一个透视,这是一组将索引转换为不同、更易于理解的格式的功能。透视会在新索引中生成数据摘要。

要定义透视,首先要选择一个或多个用于对数据进行分组的字段。您可以选择分类字段(词条)和数值字段进行分组。如果使用数值字段,则会使用您指定的间隔对字段值进行分桶。

第二步是决定如何聚合分组的数据。使用聚合时,您实际上是在提出有关索引的问题。聚合有不同的类型,每种类型都有其自身的用途和输出。要了解有关支持的聚合和分组字段的更多信息,请参阅 创建转换

作为可选步骤,您还可以添加查询以进一步限制聚合的范围。

转换执行复合聚合,该聚合会分页遍历由源索引查询定义的所有数据。聚合的输出存储在目标索引中。每次转换查询源索引时,它都会创建一个检查点。您可以决定是否要让转换运行一次或连续运行。批处理转换是具有单个检查点的单个操作。连续转换会随着新源数据的摄入不断递增和处理检查点。

假设您经营一家销售服装的网上商店。每个订单都会创建一个文档,其中包含唯一的订单 ID、订购产品的名称和类别、价格、订购数量、确切的订单日期以及一些客户信息(姓名、性别、位置等)。您的数据集包含去年所有交易。

如果您想查看上个财政年度不同类别的销售额,请定义一个按产品类别(女鞋、男装等)和订单日期分组数据的转换。使用去年作为订单日期的间隔。然后在订购数量上添加总和聚合。结果是一个以实体为中心的索引,显示去年每个产品类别中售出的商品数量。

Example of a pivot transform preview in Kibana

最新转换

编辑

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

Example of a latest transform preview in Kibana

与透视的情况一样,最新转换可以运行一次或连续运行。它对源索引中的数据执行复合聚合,并将输出存储在目标索引中。如果转换连续运行,则会将新的唯一键值自动添加到目标索引,并且每个检查点都会自动更新现有键值的最新文档。

性能注意事项

编辑

转换对源索引执行搜索聚合,然后将结果索引到目标索引中。因此,转换永远不会比聚合和索引过程花费更少的时间或使用更少的资源。

如果您的转换必须处理大量的历史数据,则最初(尤其是在第一个检查点期间)会占用大量资源。

为了获得更好的性能,请确保您的搜索聚合和查询已优化,并且您的转换仅处理必要的数据。考虑是否可以对转换应用源查询以减少其处理的数据范围。还要考虑集群是否具有足够的资源来支持复合聚合搜索和结果的索引。

如果您希望分散对集群的影响(以较慢的转换为代价),则可以限制其执行搜索和索引请求的速率。在您 创建更新 转换时,设置 docs_per_second 限制。如果您想计算当前速率,请使用 获取转换统计信息 API 中的以下信息

documents_processed / search_time_in_ms * 1000