《Elastic(中国)产品应用实战》——三、如何使用transforms来跟踪最近的客户订单

本文涉及的产品
Elasticsearch Serverless通用抵扣包,测试体验金 200元
简介: 《Elastic(中国)产品应用实战》——三、如何使用transforms来跟踪最近的客户订单

企业创建一个以实体为中心的索引,其中仅包含每个实体的最新文档,在许多情况 下都十分有用。比如,您可能正在管理一个电商网站,并且想要跟踪每个客户的最 新订单。或者,您可能想针对某段时间内不活跃的客户开展营销活动。有什么方法 能最快和最有效地编译并组织此类数据呢?


ElasticsearchTransforms功能将帮助您基于事件索引和转换函数创建并维护 以实体为中心的索引。不久之前,pivot还是唯一可用的功能,它是一个连续的 group-by plus聚合。在712版中,我们又添加了一个转换函数,称为latest它将 源索引转换为目标索引,以便目标索引中仅包含每个实体的一个最新文档。在这篇 博文中,我们将介绍如何通过transform 转换功能加以实现上述优化。


1. 性能注意事项


transforms中引入latest之前,您可以通过使用pivotscripted_metric聚合 来实现类似的效果。但是,基于脚本的解决方案存在许多问题:

1)它需要用Painless编写代码这使得

较为基础的用户难以进行创建和维护;

容易出错(参考Painless代码中容易出现的所有意外错误)。

2)它在集群中占用了更多的资源

3)它性能低缓。


性能低缓的原因显而易见,对于每个检查点transform都需要执行源索引的完整 扫描以便为每个实体找到最新的文档。由于脚本对transform来说是个黑盒它 不知道要将搜索限制为"仅最近的文档"。这使得计算成本随着时间的推移不断攀 升,并给集群带来不必要的压力。


为了规避这一问题latest函数应运而生,经过优化latest transform功能不需要搜索整个源索引。它知道最新的文档必须处在当前检查点中,否则就没有必要更新目标索引。


2. 准备数据集


在本文中,我们将使用Kibana"Sample eCommerce orders"电商订单)样本数据集做演示。


如果您想继续学习,最简单的方法是在Elastic Cloud中开始免费试用。


进入Kibana您可以单击"Add data” 添加数据)按钮从"Sample data” (样本数据)目录中获取数据集。

image.png

 

此后,我们将创建kibana_sample_data_ecommerce索引。索引中的每个文档都 是某个客户order_id字段标识)下达的订单由名为order_id的字段标识)。


我们会将kibana_sample_data_ecommerce索引转换为一个新索引(我们将其称为latest_order_per_customer其中仅包含每个客户的最新订单。


3. 设置目标索引模版


首先,我们需要有一个索引模版,用于目标索引。


执行此步骤的基本原理是pivot不同,latest不会自动推断目标索引映射。因 此,如果没有预先存在的目标索引(或索引模板),动态索引映射将被启用,这一结 果可能不会是您想要的。


想要实现目标索引的映射与源索引的映射匹配,我们就需要执行以下操作:


1)Stack Management 堆栈管理)Index Management 索引管理)页面中 确定源索引的映射并将完整的映射JSON复制到剪贴板。

image.png

 

2)"Create Template”(创建模板页面中创建一个新的索引模板并将其模 式设置为"latest_order*”,以匹配您稍后将在transform配置中指定的目标 索引名称。

image.png

3)使用"Load JSON"加载JSON)选项填充映射部分并粘贴剪贴板中的映射。

image.png

 4)删除"mappings""_doc”嵌套级别使JSON看起来如上述屏幕截图。应 用这些正确的映射后,目标索引已准备好由transform进行填充。

4. 设置 transform 功能


现在我们准备创建一个transform它能为每个客户维护最新的订单。

1转到 S tack Management 堆栈管理)>Transforms 转换,然后在 Create

Transform (创建转换页面上选择Latest (最新按钮。 image.png

 2)在屏幕下面的transform配置中,将“Unique keys”唯一密钥选项配置

customer_id的值并将“Sort字段排序字段设置为crder_date。

image.png

transform设置为连续运行很重要。连续转换不会在处理历史数据后立即停止, 而是继续处理实时接收的任何新数据:

image.png

确保您在模板中指定的索引模式匹配的目标索引名称。

此外,启用“Creat Kibana index pattern"(创建Kibana索引模式)选项。

3)最后让我们点击“Create and start"(创建并开始按钮来启动我们刚刚

配置的 transform。

image.png

 

正在运行的transform 现在将处理kibana_sample_data_ecommerce索引并使用 每个客户的最新订单不断更新目标索引latest_order_per_customer。如果有更多的 订单到达transform将相应地更新目标索引。


5. 设置保留策略


如上所述latest transform将使用每个客户的最新订单不断更新目标索引。但是 如果客户不继续在我们的电商网站上购物怎么办?


此客户的信息将保留在目标索引中,但不会再收到任何更新。如果您希望清除旧的 信息请为transform中的目标索引设置保留策略。


1)转到transform"Edit” 编辑页面,在字段中输入order_date并将Max age (最大日期设置为30d设置。

image.png

 2)单击“Update” (更新按钮以应用新策略。


根据此保留政策,任何在过去30天内未下订单的客户都将从目标索引中删除。


值得一提的是,上述保留措施etention_po[icy也可以通过pivot来实现,而不 仅仅是latest


6. 结论


总而言之我们利用了最新的transforms选项latest函数)来跟踪数据,集中每

个客户的最新订单。我们还制定了合理的保留策略,以自动清理和删除在特定时间 范围内不再购买商品的客户。


latest还有许多其他可能的使用场景,包括:

识别和激活在规定时间内没有订购任何东西的客户;

维护数据中心每台机器的最新运行状态;

• 维护每个空气污染传感器(站)的当前空气污染测量结果。

相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
相关文章
|
监控 数据可视化 Java
深入探索:自制Agent监控API接口耗时
在微服务架构中,监控API接口的调用耗时对于性能优化至关重要。通过监控这些指标,我们可以识别瓶颈,优化系统性能。本文将分享如何自己动手实现一个Agent来统计API接口的调用耗时,提供一种有效的监控解决方案。
342 2
|
缓存 NoSQL 应用服务中间件
Redis实战篇
Redis实战篇
(详细图解过程) IDEA在创建类的的时候自动生成作者信息、时间等信息
这篇文章介绍了如何在IntelliJ IDEA中设置文件和代码模板,以便在创建新类时自动生成包含作者信息、日期和时间等信息的文件头。
(详细图解过程) IDEA在创建类的的时候自动生成作者信息、时间等信息
|
IDE Java 开发工具
Lombok - Generating equals/hashCode implementation but without a call to superclass
Lombok - Generating equals/hashCode implementation but without a call to superclass
1814 0
|
机器学习/深度学习 人工智能 数据可视化
斯坦福博士图解AlphaFold 3:超多细节+可视化还原ML工程师眼中的AF3
【8月更文挑战第8天】AlphaFold 3作为AI领域的重大突破,革新了蛋白质结构预测。斯坦福博士通过图解详析了其内部机制,展示了多尺度建模与图神经网络技术如何提升预测精度。尽管存在数据依赖性和计算成本等挑战,AlphaFold 3仍极大地加速了生物学研究与药物开发进程。论文详情参见:https://www.nature.com/articles/s41586-024-07487-w
623 4
|
Prometheus 监控 Cloud Native
使用Prometheus搞定微服务监控
使用Prometheus搞定微服务监控
使用Prometheus搞定微服务监控
|
存储 数据可视化 定位技术
【ES数据可视化】kibana实现数据大屏
【ES数据可视化】kibana实现数据大屏
569 3
|
存储 分布式计算 大数据
odps是什么
【5月更文挑战第5天】odps是什么
4664 6
|
SQL 关系型数据库 MySQL
Mysql 开启慢日志查询及查看慢日志 sql
Mysql 开启慢日志查询及查看慢日志 sql
379 0
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的餐厅点餐系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的餐厅点餐系统的详细设计和实现(源码+lw+部署文档+讲解等)
156 0

热门文章

最新文章