天天看點

手把手,教你用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搭建分布式搜尋引擎

繼續閱讀