騰訊雲ES+SCF快速構建搜索服務

  • 2019 年 10 月 29 日
  • 筆記

搜索服務

搜索服務廣泛地存在於我們身邊,例如我們生活中用的百度,工作中用的wiki搜索,淘寶時用的商品搜索等,這些場景的數據具有數據量大、結構化、讀多寫少等特點,而傳統的資料庫的事務特性在搜索場景並沒有很好的使用空間,並且在全文檢索方面速度慢(如like語句)。因此,Elasticsearch應運而生。

Elasticsearch是一個廣泛應用於全文搜索領域的開源搜索引擎,它可以快速地索引、搜索和分析海量的文本數據。騰訊雲ES是基於Elasticsearch構建的高可用、可伸縮的雲端託管Elasticsearch服務,對結構化和非結構化的數據都有良好的支援,同時還提供了簡單易用的 RESTful API 和各種語言的客戶端,方便快速搭建穩定的搜索服務。

本文將針對搜索場景,使用《騰訊雲ES官方文檔》作為語料,介紹如何使用騰訊雲ES+SCF快速搭建搜索服務。先貼一個搜索服務介面:

image

資源準備

只需要一個ES集群!在騰訊雲購買一個ES集群,集群的規模根據搜索服務的QPS和存入的文檔的數據量而定。具體可以參考《節點類型存儲配置建議

部署搜索服務

我們使用騰訊雲免費的SCF工具部署搜索服務的前端介面和後台服務

1 在雲函數->函數服務介面左上角首先選擇你購買ES集群的地域

image

2 新建一個函數服務,記住你設置的函數名稱哦,然後點擊下一步 -> 完成

image

3 在函數配置介面點擊右上角的編輯,開啟內網訪問,並選擇你創建ES所選的VPC,然後點擊保存

image

4 首先將程式碼zip包下載到本地。然後在函數程式碼介面的提交方法中選擇上傳本地zip包,並選擇剛下載的zip包,點擊保存:

image

5 在函數程式碼介面修改程式碼。需要修改的文件有index.pyindex.html

* `index.py`中的`es_endpoint`修改為你的ES集群的內網地址,填寫格式如:`http://10.0.3.14:9200`
* `index.py`中的`es_password`修改為白金版ES密碼,如果不是白金版則不修改
* `index.html`中的`server_name`修改為你創建的SCF函數的函數名稱,默認為`myserver`
image
image

【注意】樣例默認使用**es_corpus_0126**作為索引名,請確保樣該索引沒有業務在使用,如需修改,可在**index.py**中修改**es_index**變數

6 在觸發方式介面點擊「添加觸發方式」,按截圖所示添加API網關觸發器,並啟用集成響應,然後點擊保存

image

7 可以在觸發方式中看到函數的「訪問路徑」,點擊這個路徑就可以訪問頁面了

image

8 上傳《騰訊雲ES官方文檔》樣例數據。點擊搜索框上方的文字,自動導入數據

image

9 至此,一個基於騰訊雲ES的簡單的問答搜索服務後台就部署完成了。開始你的搜索之旅吧!

了解更多

停用詞和用戶詞典導入

停用詞不會被ES檢索;用戶詞典在分詞的時候將保留該詞。在上面的案例中,我們導入了默認的停用詞庫用戶詞典,你也可以通過ES集群詳情頁->高級配置->更新詞典導入自己的停用詞和用戶詞典

image

同義詞配置

同義詞配置需要在創建索引時指定,支援Solr和WordNet兩種同義詞格式,可以參考《Solr synonyms》對格式的介紹