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

背景

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

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

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

实验架构图

搜索引擎架构在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,点击立即开通,选择后付费(按量付费)。

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

1.2.1 开通 MaxCompute

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

1.2.2 创建 MaxCompute project

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

创建项目

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

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

创建 MaxCompute 表

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

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

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

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

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

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

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

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

add user ALIYUN$everyone;

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

验证一下:

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

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

在窗口执行如下语句:

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

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

select count(1) from alian.demo_opensearch_case2;

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

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

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

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

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

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

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

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

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

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

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

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

3.7 创建完成

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

4.1 激活应用

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

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

4.2开始构建索引

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

可以查看索引构建进度

第五步:搜索测试

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

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

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

原文链接

干货好文,请关注扫描以下二维码:

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

  1. 适合新手:手把手教你用Go快速搭建高性能、可扩展的IM系统(有源码)

    本文为开源工程:"github.com/GuoZhaoran/fastIM"的配套文章,原作者:"绘你一世倾城",现为:猎豹移动php开发工程师,感谢原作者的技 ...

  2. stm32l0的停止模式怎么唤醒_手把手教你怎么利用旧电脑搭建NAS组建自己的黑群晖...

    手把手教你怎么利用旧电脑搭建NAS组建自己的黑群晖 Synology 群晖科技(Synology )创立于 2000 年,自始便专注于打造高效能.可靠.功能丰富且绿色环保的 NAS 服务器,是全球少数 ...

  3. 手把手教你从0开始搭建一个vue项目(完结)

    前言 上一节webpack实战之(手把手教你从0开始搭建一个vue项目)最后我们完成了css样式的配置: webpack.config.js: const path = require("p ...

  4. 手把手教你腾讯云搭建RUOYI系统

    手把手教你腾讯云搭建RUOYI系统 前置准备 腾讯云配置 1 服务器准备 1.1 腾讯云购买地址: 1.2 配置 开放端口 2 软件安装 2.1 MySQL在线安装 2.2 Redis 安装 2.3 ...

  5. 手把手教你直播平台怎么搭建

    手把手教你直播平台怎么搭建 后端项目初始化 1.全局安装express脚手架 额,这个应该是属于准备工作的.给忘记了,那就凑合放在这里吧,别打我,我知道错了,但我就是不改[狗头保命] cnpm ins ...

  6. ESP8266 Non-OS SDK 开发之旅 基础篇① 初识 Non-OS SDK,史上超级详细手把手教小白20分钟快速搭建SDK软件开发环境,完成第一个例子Hello World!

    文章目录 1.前言 2. SDK概述 2.1 SDK使用流程 2.2 ESP8266 HDK -- 硬件开发工具 2.3 ESP8266 SDK -- 软件开发工具包 2.3.1 Non-OS SDK ...

  7. 手把手教你做关键词匹配项目(搜索引擎)---- 第九天

    第九天 回顾: 8. 手把手教你做关键词匹配项目(搜索引擎)---- 第八天 7. 手把手教你做关键词匹配项目(搜索引擎)---- 第七天 6. 手把手教你做关键词匹配项目(搜索引擎)---- 第六天 ...

  8. 手把手教你做关键词匹配项目(搜索引擎)---- 第二十一天

    客串:屌丝的坑人表单神器.数据库那点事儿 面向对象升华:面向对象的认识----新生的初识.面向对象的番外----思想的梦游篇(1).面向对象的认识---如何找出类 负载均衡:负载均衡----概念认识篇 ...

  9. 手把手教你从0开始搭建个人博客,东半球最详细的保姆级博客搭建部署教程 | 程序员人手必备个人博客网站

    Hello 小伙伴们大家好,我是雷小帅! 想象一下你有一个技术博客,然后把网址写在了简历上,面试官点击鼠标打开了这个网站,然后被惊艳了,最后面试的结果你懂得-- 好了,今天的主题就是手把手教大家从零开 ...

最新文章

  1. 【听课笔记】国立交通大学《如何成功投稿国际科学期刊》 投稿准备+审稿流程剖析...
  2. Selenium之XPATH轴定位(第三篇)
  3. 机器学习——聚类算法
  4. 随机样本选择——快速求解机器学习中的优化问题
  5. 【android-tips】android xml布局总结篇
  6. 编程语言注释方法大全
  7. SAP系统和微信集成的系列教程之九:如何将微信用户发送给微信公众号的内容自动转存到SAP C4C系统
  8. C#中如何创建文件夹
  9. iOS开发之网络编程--获取文件的MIMEType
  10. 小猴子下落nyoj63(一道可以直接写的好题)
  11. TrueCrypt中文版怎么用?TrueCrypt使用方法及详细教程介绍
  12. Excel快速删除空白行与调整行高列宽的方法,学会了很实用
  13. 设计模式之工厂模式(简单工厂、工厂方法、抽象工厂)
  14. MAC 安装homebrew流程
  15. 傅里叶描述子、HOG特征描述子原理及matlab代码
  16. A PM2.5 concentration estimation method based on multi-feature combination of image patches文章详解
  17. 基金使用计划 数学建模 matlab,数学建模论文-基金使用计划
  18. dash 机器人 Android,用于 Dash 和 Dot 机器人的Blockly
  19. 数藏拐点已至,未来行业破局靠什么?
  20. Python利用qrcode生成二维码并解析结果

热门文章

  1. android 调用系统下载apk,如何在自己的App中调用Android系统自带的安装/卸载程序...
  2. python enumerate函数_Python中enumerate函数用法详解
  3. 中科院一博士论文走红:把书念下去,然后走出去,不枉活一世
  4. 这就是库克的重大计划?英特尔新CEO帕特誓言:CPU必须要比苹果好!
  5. 热胀冷缩,但为什么水结冰体积会膨胀?
  6. 奥数会不会彻底被信息奥赛取代?
  7. mysql root密码过期了_Mac下重置mysql的root密码
  8. android filehelper,为AndroidStudio开发mvp插件(MvpHelper)
  9. mysql的发展进程和特点,试述数据库技术的发展过程。数据库技术发展的特点是什么?...
  10. Deepin nginx lumen配置