同步RDS数据到 Elasticsearch 中并进行搜索分析

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介:

阿里云上拥有丰富的云存储、云数据库产品。如果您希望针对这些产品中的数据进行分析和搜索,可以通过DataWorks的数据集成服务,将离线数据同步到Elasticsearch中,最快可达到5分钟一次。

注意:做数据同步时可能会产生公网流量费用,请您知晓。

准备工作

完成离线数据的分析与搜索,需要您完成以下几步操作:

  • 创建一个数据库,您可以选择使用阿里云的RDS数据库,也可以在本地服务器上自建数据库。本文档以RDS for MySQL数据库为例,数据库字段及数据如下图所示。

  • 购买一台可以与VPC内的Elasticsearch交互的ECS,这台ECS将获取数据源数据并执行写Elasticsearch数据的任务(该任务将由数据集成系统统一下发)。

  • 开通DataWorks的数据集成服务,并且将ECS作为一个可以执行任务的资源,注册到数据集成服务中去。

  • 配置一个数据同步的脚本,并且让其可以周期性的执行起来。

  • 创建一个Elasticsearch实例,用来存储数据集成系统同步成功的数据。

操作步骤

数据同步

  1. 创建专有网络VPC

  2. 进入Elasticsearch控制台,单击创建,创建一个Elasticsearch实例。

    地域专有网络虚拟交换机与您第一步中创建的专有网络保持一致。

  3. 购买一台与Elasticsearch服务处于同一个VPC内的ECS服务器,并分配一个公网IP合或开通弹性IP,为了节省您的成本,您可以复用已有的ECS服务器。

    • 建议使用 centos6、centos7 或者 aliyunos。
    • 如果您添加的 ECS 需要执行 MaxCompute 任务或者同步任务,需要检查当前 ECS 的 python 版本是否是 python2.6或2.7 的版本(centos5 的版本为 2.4 ,其余 os 自带了 2.6 以上版本)。
    • 请确保 ECS 有公网 IP。
  4. 进入DataWorks 控制台,并进入工作区。

    • 如果您已经开通过DataWorks数据集成产品,您将会看到如下页面:

    • 如果您未开通过DataWorks数据集成产品,您将会看到如下页面。您需要按照步骤开通数据集成服务,此开通动作会产生费用,请您按照费用提示进行预算评估。

  5. 单击DataWorks项目下方的进入数据集成

  6. 在数据集成页面,选择左侧导航栏中的资源组,单击新增资源组

  7. 根据界面提示,输入资源组名称和服务器信息。此服务器为您已经购买的ECS服务器,服务器信息说明如下:

    • ECS UUID:登录 ECS 服务器,执行 dmidecode | grep UUID,取返回值。

    • 机器 IP/机器CPU(核)/机器内存(GB):您ECS实例的公网IP/CPU/内存。您可以在ECS控制台上单击实例名称,在配置信息模块,找到相关信息。

    • 按照界面提示,完成安装Agent步骤。其中第五步为开通服务器的8000端口,可以跳过,保持系统默认即可。

  8. 配置数据库白名单,添加该资源组的IP地址和DataWorks服务器的IP地址,到您的数据库白名单中。

  9. 资源组创建成功后,选择左侧导航栏的数据源,单击新增数据源

  10. 单击MySQL,进入新增MySQL数据源页面,填入数据源信息,如下图所示。

    数据源类型:本文档以阿里云数据库(RDS)为例,您也可以选择有公网IP无公网IP

  11. 选择左侧导航栏的同步任务,单击新建,选择脚本模式

  12. 导入模板对话框中,选择数据源类型MySQL数据源为您第10步中新增的数据源名称,目标类型Elasticsearch,完成后单击确认

  13. 配置数据同步脚本。具体配置请参考[配置数据同步脚本模式任务]

    说明

    • 同步脚本的配置分为三个部分,Reader用来配置您上游数据源(待同步数据的云产品)的config,Writer用来配置 Elasticsearch的config,setting用来配置同步中的一些丢包和最大并发等。
    • endpoint为Elasticsearch 的内网或外网地址,如果您使用的是内网地址,请在Elasticsearch的集群配置页面,配置Elasticsearch的系统白名单。如果您是用的是外网地址,请在Elasticsearch的网络配置页面,配置 Elasticsearch的公网地址访问白名单(包括[DataWorks服务器的IP地址]和您所使用的资源组的IP地址)。
    • Elasticsearch Writer中accessId和accessKey需要配置您的Elasticsearch的访问用户名(默认为elastic)和密码。
    • index为Elasticsearch实例的索引,您需要使用该索引名称访问Elasticsearch的数据。
  14. 同步脚本配置完成后,单击页面右侧的配置任务资源组,选择您第7步创建的资源组名称,完成后单击运行,将MySQL中的数据同步到Elasticsearch中。

数据搜索分析

  1. 进入Elasticsearch控制台,单击右上角的kibana控制台,选择Dev Tools

  2. 执行如下命令,查看已经同步过来的数据。

    POST /testrds/_search?pretty
    {
    "query": { "match_all": {}}
    }
    
    AI 代码解读

    testrds为您同步数据时,设置的index字段的值。

  3. 执行如下命令,按照trans_num字段对文档进行排序。

    POST /testrds/_search?pretty
    {
    "query": { "match_all": {} },
    "sort": { "trans_num": { "order": "desc" } }
    }
    
    AI 代码解读
  4. 执行如下命令,搜索文档中的categorybrand字段。

    POST /testrds/_search?pretty
    {
    "query": { "match_all": {} },
    "_source": ["category", "brand"]
    }
    
    AI 代码解读
  5. 执行如下命令,搜索category的文档。

    POST /testrds/_search?pretty
    {
    "query": { "match": {"category":"生"} }
    }
    
    AI 代码解读

更多命令和访问方式,请参考[阿里云Elasticsearch官方文档] 和Elastic.co官方帮助中心

常见问题

  • 同步过程中出现无法连接数据库的相关错误。

    解决方法:将您资源组中所使用的ECS服务器的内网IP和外网IP,都添加到您数据库的白名单中。

  • 同步过程中无法连通Elasticsearch实例的相关错误。

    解决方法:按照下面步骤进行排查。

    1. 检查在运行同步脚本之前,是否在页面右侧的配置任务资源组中选择了您前面步骤创建的资源组。

      • 是,执行下一步。
      • 否,单击页面右侧的配置任务资源组,选择您前面步骤创建的资源组。完成后单击运行
    2. 检查是否在Elasticsearch实例的白名单中,添加了[DataWorks服务器的IP地址]和您所使用的资源组的IP地址。

      • 是,执行下一步。
      • 否,将[DataWorks服务器的IP地址]和您所使用的资源组的IP地址,添加到 Elasticsearch 实例的白名单中。

      注意:如果您使用的是内网地址,请在Elasticsearch的集群配置页面,配置Elasticsearch的系统白名单。如果您是用的是外网地址,请在Elasticsearch的网络配置页面,配置Elasticsearch的公网地址访问白名单(包括[DataWorks服务器的IP地址]和您所使用的资源组的IP地址)。

    3. 检查您的同步脚本配置是否正确。包括endpoint(您 Elasticsearch 实例的内网或外网地址)、accessId(Elasticsearch 实例的访问用户名,默认为elastic)和accessKey(Elasticsearch实例的访问密码)。

(本文作者为大数据产品文档团队)

目录
打赏
0
0
0
0
61
分享
相关文章
一种小资源情况下RDS数据实时同步StarRocks方案
使用一台4C8 G服务器轻松实现2个MySQL实例中通过负责分库分表规则之后的5000多张表的数据实时同步到StarRocks
209 67
从企业级 RAG 到 AI Assistant,阿里云Elasticsearch AI 搜索技术实践
本文介绍了阿里云 Elasticsearch 推出的创新型 AI 搜索方案
257 3
从企业级 RAG 到 AI Assistant,阿里云Elasticsearch AI 搜索技术实践
云端问道12期实操教学-构建基于Elasticsearch的企业级AI搜索应用
本文介绍了构建基于Elasticsearch的企业级AI搜索应用,涵盖了从传统关键词匹配到对话式问答的搜索形态演变。阿里云的AI搜索产品依托自研和开源(如Elasticsearch)引擎,提供高性能检索服务,支持千亿级数据毫秒响应。文章重点描述了AI搜索的三个核心关键点:精准结果、语义理解、高性能引擎,并展示了架构升级和典型应用场景,包括智能问答、电商导购、多模态图书及商品搜索等。通过实验部分,详细演示了如何使用阿里云ES搭建AI语义搜索Demo,涵盖模型创建、Pipeline配置、数据写入与检索测试等步骤,同时介绍了相关的计费模式。
构建基于 Elasticsearch 的企业级 AI 搜索应用
本文介绍了基于Elasticsearch构建企业级AI搜索应用的方案,重点讲解了RAG(检索增强生成)架构的实现。通过阿里云上的Elasticsearch AI搜索平台,简化了知识库文档抽取、文本切片等复杂流程,并结合稠密和稀疏向量的混合搜索技术,提升了召回和排序的准确性。此外,还探讨了Elastic的向量数据库优化措施及推理API的应用,展示了如何在云端高效实现精准的搜索与推理服务。未来将拓展至多模态数据和知识图谱,进一步提升RAG效果。
阿里云技术公开课直播预告:基于阿里云 Elasticsearch 构建 AI 搜索和可观测 Chatbot
阿里云技术公开课预告:Elastic和阿里云搜索技术专家将深入解读阿里云Elasticsearch Enterprise版的AI功能及其在实际应用。
377 2
阿里云技术公开课直播预告:基于阿里云 Elasticsearch 构建 AI 搜索和可观测 Chatbot
从企业级 RAG 到 AI Assistant,阿里云Elasticsearch AI 搜索技术实践
本文介绍了阿里云 Elasticsearch 推出的创新型 AI 搜索方案。
371 5
超值选择:阿里云Elasticsearch Serverless在企业数据检索与分析中的高性能与灵活性
本文介绍了阿里云Elasticsearch Serverless服务的高性价比与高度弹性灵活性。
188 8
(Elasticsearch)使用阿里云 infererence API 及 semantic text 进行向量搜索
本文展示了如何使用阿里云 infererence API 及 semantic text 进行向量搜索。
164 8
一文看懂Elasticsearch的技术架构:高效、精准的搜索神器
Elasticsearch 是一个基于 Lucene 的开源搜索引擎,以其强大的全文本搜索功能和快速的倒排索引技术著称。它不仅支持数字、文本、地理位置等多类型数据,还提供了可调相关度分数、高级查询 DSL 等功能。Elasticsearch 的核心技术流程包括数据导入、解析、索引化、查询处理、得分计算及结果返回,确保高效处理大规模数据并提供准确的搜索结果。通过 RESTful API、Logstash 和 Filebeat 等工具,Elasticsearch 可以从多种数据源中导入和解析数据,支持复杂的查询需求。
228 0

热门文章

最新文章