何时使用转换
编辑何时使用转换编辑
Elasticsearch 聚合是一个强大而灵活的功能,使您能够汇总和检索有关数据的复杂见解。您可以汇总复杂的事物,例如繁忙网站上每天的网页请求数量,按地理位置和浏览器类型细分。但是,如果您使用相同的数据集尝试计算像单个数字这样的简单事物,例如访问者网页会话的平均持续时间,您可能会很快耗尽内存。
为什么会发生这种情况?网页会话持续时间是行为属性的一个示例,该属性不在任何一个日志记录中;它必须通过在我们的网页日志中查找每个会话的第一个和最后一个记录来推导出。这种推导需要一些复杂的查询表达式和大量内存来连接所有数据点。如果您有一个持续的后台进程,它将相关事件从一个索引融合到另一个索引中的以实体为中心的摘要中,您将获得更实用、更完整的画面。这个新索引有时被称为数据帧。
当您需要以下内容时,您可能需要考虑使用转换而不是聚合
-
您需要一个完整的特征索引,而不是一个前 N 个项目集。
在机器学习中,您通常需要一组完整的行为特征,而不仅仅是前 N 个。例如,如果您要预测客户流失,您可能会查看诸如过去一周的网站访问次数、总销售额或发送的电子邮件数量等特征。Elastic Stack 机器学习功能基于此多维特征空间创建模型,因此它们受益于转换创建的完整特征索引。
当您尝试跨聚合或多个聚合的结果进行搜索时,这种情况也适用。聚合结果可以排序或过滤,但对排序存在限制,并且通过桶选择器过滤受返回的桶的最大数量限制。如果您想搜索所有聚合结果,您需要创建完整的数据帧。如果您需要按多个字段对聚合结果进行排序或过滤,转换特别有用。
-
您需要按管道聚合对聚合结果进行排序。
管道聚合不能用于排序。从技术上讲,这是因为管道聚合在所有其他聚合完成后在减少阶段运行。如果您创建转换,您可以有效地对数据执行多次传递。
-
您想创建汇总表以优化查询。
例如,如果您有一个由大量用户访问的高级仪表板,并且它对大型数据集使用复杂的聚合,那么创建转换来缓存结果可能更有效。因此,每个用户都不需要运行聚合查询。