天天看点

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

<b>背景</b>

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

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

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

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

<b>实验架构图</b>

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

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

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

<b> 实验准备工作</b>

1、注册阿里云用户,实名认证并绑定支付宝;

2、开通数加服务;

3、开通maxcompute、opensearch 后付费服务。

<b>实验任务</b>

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

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

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

4、搜索效果测试。

1.1 开通opensearch服务

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

1.2 开通maxcompute&amp;大数据开发套件服务

1.2.1 开通 maxcompute

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

1.2.2 创建 maxcompute project

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

创建项目

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

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

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

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

创建 maxcompute 表

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

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

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

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

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

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

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

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

验证一下:

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

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

在窗口执行如下语句:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

【注意】对于odps表中的string类型需要转换为literal后建主键。

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

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

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

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

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

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

3.7 创建完成

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

4.1 激活应用

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

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

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

 4.2开始构建索引

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

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

 可以查看索引构建进度

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

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

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

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

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

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

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

继续阅读