手把手,教你用MaxCompute+OpenSearch搭建分布式搜索引擎

简介: 最近,经常有客户咨询如何低成本搭建高性能的海量数据搜索引擎,比如实现公众号检索、影讯检索等等。由于客户的数据在阿里云上,所以希望找到云上解决方案。笔者开始调研一些云上产品,很多人向我推荐了OpenSearch,所以花了点时间好好研究了下,用过之后发现效果不错,自带分词、云数据库同步功能,在研究过程中也发现了一些问题,分享给大家。

背景

最近,经常有客户咨询如何低成本搭建高性能的海量数据搜索引擎,比如实现公众号检索、影讯检索等等。由于客户的数据在阿里云上,所以希望找到云上解决方案。笔者开始调研一些云上产品,很多人向我推荐了OpenSearch,所以花了点时间好好研究了下,用过之后发现效果不错,自带分词、云数据库同步功能,在研究过程中也发现了一些问题,分享给大家。

接下来,我们开始用阿里云MaxCompute(原名ODPS)和OpenSearch来搭建一个影讯检索的搜索引擎Demo,我有大约10GB数据,服务搭建只用了15分钟,数据同步建索引大概用1个小时。因为选择弹性计费,实验费用大概花了几十元。


先晒一下搜索效果,支持一些常用分词语法,而且OpenSearch自带了丰富的SDK和API,可以很方便的集成到线上业务。

ae51f3deb48f8c54addca03a30292df5e0fe7f93

bb702f23b5eba1fd3bb44ea42328fc68ff1c5312

2a6ed916a2aa672201da5c887051cedd14518278




实验架构图

fb25e292a5a441fbd6cc45d0a668776d4dbaec71

搜索引擎架构在OpenSearch之上,是一个典型的分布式在线实时交互查询架构,无单点故障,高伸缩、高可用,免运维,低成本。对大量信息的索引与搜索都可以在近乎实时的情况下完成,能够快速实时搜索数十亿的文件以及PB级的数据。


分布式数据库架构在MaxCompute之上,是一种快速、完全托管的TB/PB级数据仓库解决方案。MaxCompute向用户提供了完善的数据导入方案以及多种经典的分布式计算模型,能够更快速的解决用户海量数据计算问题,有效降低企业成本,并保障数据安全。

 

 

 实验准备工作

1、注册阿里云用户,实名认证并绑定支付宝;
2、开通数加服务;
3、开通MaxCompute、OpenSearch 后付费服务。
 

实验任务

1、用MaxCompute导入公开数据集;

2、用OpenSearch 创建应用,配置数据/索引结构、分词;

3、全量导入数据,构建索引;

4、搜索效果测试。

 

第一步:购买并开通OpenSearch、MaxCompute、大数据开发套件服务

1.1 开通Opensearch服务

访问https://www.aliyun.com/product/opensearch,点击立即开通,选择后付费(按量付费)。

 

9e4c7e6eebeb08e22cb70fdf24277eaabbfbf045

02c55092bc06305ba2c2cdd976799177e7e491c7

1.2 开通MaxCompute&大数据开发套件服务

1.2.1 开通 MaxCompute

阿里云实名认证账号访问https://www.aliyun.com/product/odps ,开通 MaxCompute,选择按量付费进行购买。

e7dedd1539ad9a0ff3d57c9b85cf22644db7f804

787d04aeb0202236f52773b0179613972546c5fd

8030cd2fe902b6f6f463a71e8447d82b664c30a5

1.2.2 创建 MaxCompute project

 进入数加管理控制台,前面开通 MaxCompute 成功页面,点击管理控制台,或者导航产品->大数据(数加)->MaxCompute 点击管理控制台。

80c969013ce3a705f65ab7592e2bb760ff37ce91

创建项目

进入控制台页面后导航至“大数据开发套件->项目列表“,点击”创建项目”,如图所示:

3ff6f030db17264cbcc53dd0457e43c616bed664

在弹出框中选择 I/O 后付费的付费方式,输入项目名称:

e2b9399c6e6f88dd193560c48df57714bafb2661

创建 MaxCompute 表

进入大数据开发套件的数据开发页面,以开发者身份进入阿里云数加平台>大数据开发套件>管理控制台,点击项目列表下对应项目操作栏中的进入工作区。

注意:如果首次使用数加平台,需要先注册数加开通AK。

 

第二步:通过大数据开发套件导入数据集到MaxCompute

进入大数据开发套件工作区后,我们先导入一份测试数据。

 

数据说明:笔者这里引用了一份MaxCompute公开数据集(正在公测),地址:https://yq.aliyun.com/articles/89763,目前MaxCompute开放的数据类别包括:股票价格数据,房产信息,影视及其票房数据。所有的数据均被存储在 MaxCompute 产品中的 public_data 项目中。


接下来,我们引用一份影视票房数据。

58760e7d99418104208c15552bead5b7d6f0663d

使用非常简单,前提条件是开通MaxCompute&大数据开发套件;


在大数据开发套件中,新建脚本,命名opensearch_demo,在窗口执行如下语句。

add user ALIYUN$everyone;


执行完成后用户项目空间下的所有成员均可读取各公开数据集合。


验证一下:

select * from public_data.dwd_product_movie_basic_info  where movie_name like '%生化危机%' limit 10; 

6138fe0b265f06125bf01af94d5fa06140ac890e

 

拷贝一份数据到自己的Project项目下,注意:OpenSearch里有主键概念,所以我们需要在MaxCompute中建主键,这里通过UUID函数实现。

在窗口执行如下语句:


create table alian.demo_opensearch_case2 as
 
select uuid() as id,* from public_data.dwd_product_movie_basic_info ;


95ce1e0266db13d0c11ef13611b6d55d37e2e102

 

执行成功后,验证一下数据;


select count(1) from alian.demo_opensearch_case2;


可以看到数据集已经创建好;

8a81744359c2053c3dd8c6140c9343b7af466bc4

第三步:创建开放搜索应用

3.1 进入OpenSearch控制台,点击“创建应用”


33d64339894598bba2078d5ff48dac051217e413

3.2 选择产品版本,笔者开通的是标准版。如果需要多表关联搜索,请开通高级版,如果是单表查询,标准版就可以。

 

 

e57056c89b081df6ae6c2645446dd35334a67e23

3.3 输入应用名称MaxCompute_OpenSearch_Demo,地域选华东1(杭州),因为MaxCompute目前只有华东,否则数据链路不通,点击下一步。

 

624d17c872f0e3aedc25dc79b893d02d5b51ced2

 

3.4 选择“通过数据源方式创建应用结构”。可以快速由源表结构创建出初始的应用结构,节省手动构造的工作量,降低出错概率。

f3c6c889935395d3c0295a3aa0c7f482a34fba76

 

 

3.5 选择ODPS,刚才创建的表。

6984ea63794ce034288b222b4e5d8fe0833783c8

 

选择刚才创建的ODPS项目及表demo_opensearch_case2

7fe142bd152dd697e38d6b9e22557bbfd2609b88

 

 

【注意】对于ODPS表中的STRING类型需要转换为LITERAL后建主键。


470c8839f496bc28d25cb08dae59073e87a40615

 

3.6 配置索引、分词及搜索展示内容


选择movie_name、 director、scriptwriter、area、actors、type、movile_date、movie_language字段做索引,设置默认中文分词方式。

90da8b5ce35b69a020cb7bcc5bbea094e16308ba

添加展示字段,设置搜索结果内容。

dd2ff4fc4d155993dcfde77b6f4fe1eb5add7464

 

3.7 创建完成


b06e99cb1f37c3db47f8564e7749279123bfd4c6

fca04a3716533ef6646d0c85468d71313cde16f1

 

 

 

第四步:同步数据并创建索引

4.1 激活应用

选择配额及QPS,我们用的数据集大概8G,所以开通的是10G配额,QPS采用默认项。

注意:MaxCompute(原ODPS)的数据是压缩过的,我们用的数据SIZE压缩后2GB,但实际是8GB,笔者之前购买了3GB的OpenSearch配额,结果导入失败。

976f35e7d4da10200b193e8dae901a5cb27abe8e



 4.2开始构建索引

这里主要就是等等,笔者等了一个小时。

579ecc5ad30fd129f296847b1eeaff90daa1549f

 

 可以查看索引构建进度550fb684535a837d0604e9a326dbfdf32534951a

 

第五步:搜索测试

打开应用管理->搜索测试,输入任意影片,比如最近刚上映的摔跤 爸爸,然后自动匹配出相应的影讯信息,完成实验。

MaxCompute提供的数据集很赞,数据量多、新鲜度很高。

bb702f23b5eba1fd3bb44ea42328fc68ff1c5312


总结:到这里,我们就完成了整个实验,OpenSearch+MaxCompute笔者认为还是很方便,非常适合数据规模在100GB以上并且不希望高昂的运维成本和IT成本的企业;


购买&试用MaxCompute,请扫二维码加入钉钉群。

745bc16034148d4c04c2bb44ec5275be0021f412

bba01b493e1c5d904e882b1c380673c6ebe49a98


相关实践学习
简单用户画像分析
本场景主要介绍基于海量日志数据进行简单用户画像分析为背景,如何通过使用DataWorks完成数据采集 、加工数据、配置数据质量监控和数据可视化展现等任务。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
目录
相关文章
|
3月前
|
存储 数据采集 大数据
大数据处理与分析技术:驱动智能决策的引擎
本文介绍了大数据处理与分析技术在现代社会中的重要性和应用。从数据采集、存储、处理到分析决策,大数据技术为我们提供了深入洞察和智能决策的能力,推动着各行各业的创新和发展。
54 0
|
3月前
|
存储 边缘计算 人工智能
云计算与分布式系统架构:驱动数字化时代的创新引擎
本文将探讨云计算与分布式系统架构在数字化时代中的重要性,介绍其基本概念和原理,并探讨其在推动技术创新、提升企业效率和满足用户需求方面的作用。同时,还将提出未来发展的趋势和挑战,为读者提供对云计算与分布式系统架构的深入理解。
|
3月前
|
消息中间件 算法 Java
【亿级数据专题】「分布式消息引擎」 盘点本年度我们探索服务的保障容量的三大关键方案实现
尽管经过了上一篇文章 《【亿级数据专题】「分布式消息引擎」 盘点本年度我们探索服务的低延迟可用性机制方案实现》有了低延迟的优化保障,消息引擎仍需精心规划其容量。为了提供无与伦比的流畅体验,消息引擎必须实施有效的容量管理策略。
52 2
【亿级数据专题】「分布式消息引擎」 盘点本年度我们探索服务的保障容量的三大关键方案实现
|
12天前
|
分布式计算 Hadoop 大数据
大数据技术与Python:结合Spark和Hadoop进行分布式计算
【4月更文挑战第12天】本文介绍了大数据技术及其4V特性,阐述了Hadoop和Spark在大数据处理中的作用。Hadoop提供分布式文件系统和MapReduce,Spark则为内存计算提供快速处理能力。通过Python结合Spark和Hadoop,可在分布式环境中进行数据处理和分析。文章详细讲解了如何配置Python环境、安装Spark和Hadoop,以及使用Python编写和提交代码到集群进行计算。掌握这些技能有助于应对大数据挑战。
|
5月前
|
存储 分布式计算 Hadoop
【大数据】Hadoop技术解析:大数据处理的核心引擎
【大数据】Hadoop技术解析:大数据处理的核心引擎
161 0
|
6月前
|
SQL 分布式计算 大数据
黑马程序员-大数据入门到实战-分布式SQL计算 Hive 入门
黑马程序员-大数据入门到实战-分布式SQL计算 Hive 入门
71 0
|
2月前
|
消息中间件 存储 负载均衡
【亿级数据专题】「分布式消息引擎」 盘点本年度我们探索服务的HA高可用解决方案
昔之善战者,先为不可胜,以待敌之可胜。不可胜在己,可胜在敌。故善战者,能为不可胜,不能使敌之必可胜。故曰:胜可知,而不可为。
79 2
【亿级数据专题】「分布式消息引擎」 盘点本年度我们探索服务的HA高可用解决方案
|
6月前
|
SQL 存储 大数据
黑马程序员-大数据入门到实战-分布式SQL计算 Hive 语法与概念
黑马程序员-大数据入门到实战-分布式SQL计算 Hive 语法与概念
76 0
|
3月前
|
消息中间件 存储 Java
【亿级数据专题】「分布式消息引擎」 盘点本年度我们探索服务的低延迟可用性机制方案实现
在充满挑战的2023年度,我们不可避免地面对了一系列棘手的问题,例如响应速度缓慢、系统陷入雪崩状态、用户遭受不佳的体验以及交易量的下滑。这些问题的出现,严重影响了我们的业务运行和用户满意度,为了应对这些问题,我们所在团队进行了大量的研究和实践,提出了低延迟高可用的解决方案,并在分布式存储领域广泛应用。
43 2
【亿级数据专题】「分布式消息引擎」 盘点本年度我们探索服务的低延迟可用性机制方案实现
|
1月前
|
存储 分布式计算 大数据
现代化数据库技术——面向大数据的分布式存储系统
传统的关系型数据库在面对大规模数据处理时遇到了诸多挑战,而面向大数据的分布式存储系统应运而生。本文将深入探讨现代化数据库技术中的分布式存储系统,包括其优势、工作原理以及在大数据领域的应用。

相关产品

  • 云原生大数据计算服务 MaxCompute