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

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 《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还有许多其他可能的使用场景,包括:

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

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

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

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
6月前
|
数据采集 JSON Java
揭秘阿里巴巴:如何通过API实时捕获中国市场商品数据
阿里巴巴提供了丰富的API接口,使得第三方开发者可以实时捕获中国市场商品数据。以下是一些关键步骤和要点,帮助你揭秘如何通过阿里巴巴的API实现这一目标:
|
4月前
|
人工智能 数据挖掘 数据库
客户在哪儿AI的企业全历史行为数据与企业信息查询平台上的数据有何区别
客户在哪儿AI的企业全历史行为数据 VS 企业信息查询平台上的数据。
|
6月前
|
JavaScript Java 测试技术
基于Java的智能实时疫情监管服务平台的设计与实现(源码+lw+部署文档+讲解等)
基于Java的智能实时疫情监管服务平台的设计与实现(源码+lw+部署文档+讲解等)
41 0
|
6月前
|
存储 安全 API
阿里巴巴中国站1688商品评论API:实时数据获取与应用的探索
阿里巴巴中国站作为国内知名的B2B电商平台,为供应商和采购商提供了一个便捷的交易平台。在交易过程中,商品评论作为反映商品质量、服务态度等信息的重要途径,对于其他用户具有重要的参考价值。为了满足用户对实时评论信息的需求,阿里巴巴中国站提供了1688商品评论API。本文将详细介绍如何使用1688商品评论API实现实时数据获取,并提供相关的代码示例。
|
6月前
|
存储 缓存 API
阿里巴巴中国站1688商品详情API实时数据获取:从零基础到精通的全程指南
随着电子商务的快速发展,实时数据获取在商业决策中扮演着越来越重要的角色。阿里巴巴中国站作为国内领先的B2B平台,提供了丰富的API接口供开发者使用。本文将重点介绍如何通过阿里巴巴中国站的1688商品详情API实现实时数据获取,并给出相应的代码示例。
|
存储 缓存 安全
《Elastic(中国)产品应用实战》——六、使用新的冻结层直接搜索 S3
《Elastic(中国)产品应用实战》——六、使用新的冻结层直接搜索 S3
《Elastic(中国)产品应用实战》——六、使用新的冻结层直接搜索 S3
|
弹性计算 运维 自然语言处理
《Elastic 与阿里云合作宣传信息》——部署与功能介绍
《Elastic 与阿里云合作宣传信息》——部署与功能介绍
138 0
|
机器学习/深度学习 存储 弹性计算
《Elastic 与阿里云合作宣传信息》——解决方案的核心优势
《Elastic 与阿里云合作宣传信息》——解决方案的核心优势
87 0
|
监控 数据可视化 机器人
基于阿里云Serverless函数计算开发的疫情数据统计推送机器人
疫情数据统计推送机器人基于Python和阿里云Serverless函数计算开发。实现了使用Python爬取获得疫情数据并进行整理,使用函数计算配合定时触发器,每天定时推送全国疫情数据到企业微信。
20348 8
基于阿里云Serverless函数计算开发的疫情数据统计推送机器人
|
监控 数据可视化 Serverless