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

摘要: 最近,常常有客戶諮詢如何低成本搭建高性能的海量數據搜索引擎,好比實現公衆號檢索、影訊檢索等等。因爲客戶的數據在阿里雲上,因此但願找到雲上解決方案。筆者開始調研一些雲上產品,不少人向我推薦了OpenSearch,因此花了點時間好好研究了下,用過以後發現效果不錯,自帶分詞、雲數據庫同步功能,在研究過程當中也發現了一些問題,分享給你們。數據庫

背景安全

最近,常常有客戶諮詢如何低成本搭建高性能的海量數據搜索引擎,好比實現公衆號檢索、影訊檢索等等。因爲客戶的數據在阿里雲上,因此但願找到雲上解決方案。筆者開始調研一些雲上產品,不少人向我推薦了OpenSearch,因此花了點時間好好研究了下,用過以後發現效果不錯,自帶分詞、雲數據庫同步功能,在研究過程當中也發現了一些問題,分享給你們。架構

接下來,咱們開始用阿里雲MaxCompute(原名ODPS)和OpenSearch來搭建一個影訊檢索的搜索引擎Demo,我有大約10GB數據,服務搭建只用了15分鐘,數據同步建索引大概用1個小時。由於選擇彈性計費,實驗費用大概花了幾十元。運維

先曬一下搜索效果,支持一些經常使用分詞語法,並且OpenSearch自帶了豐富的SDK和API,能夠很方便的集成到線上業務。分佈式

ae51f3deb48f8c54addca03a30292df5e0fe7f93

bb702f23b5eba1fd3bb44ea42328fc68ff1c5312

2a6ed916a2aa672201da5c887051cedd14518278

實驗架構圖函數

fb25e292a5a441fbd6cc45d0a668776d4dbaec71

搜索引擎架構在OpenSearch之上,是一個典型的分佈式在線實時交互查詢架構,無單點故障,高伸縮、高可用,免運維,低成本。對大量信息的索引與搜索均可以在近乎實時的狀況下完成,可以快速實時搜索數十億的文件以及PB級的數據。性能

分佈式數據庫架構在MaxCompute之上,是一種快速、徹底託管的TB/PB級數據倉庫解決方案。MaxCompute向用戶提供了完善的數據導入方案以及多種經典的分佈式計算模型,可以更快速的解決用戶海量數據計算問題,有效下降企業成本,並保障數據安全。測試

 實驗準備工做大數據

一、註冊阿里雲用戶,實名認證並綁定支付寶;
二、開通數加服務;
三、開通MaxCompute、OpenSearch 後付費服務。
 ui

實驗任務

一、用MaxCompute導入公開數據集;

二、用OpenSearch 建立應用,配置數據/索引結構、分詞;

三、全量導入數據,構建索引;

四、搜索效果測試。

 

第一步:購買並開通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成本的企業;

原文連接

相關文章
相關標籤/搜索