本文以“某金融服務企業使用Elasticsearch(簡稱ES)為使用者提供理財產品的搜尋功能”情境為例,為您介紹如何使用阿里雲ES搭建叢集並完成索引建立、資料搜尋等操作。
操作須知
資料說明:樣本該企業的理財產品資訊如下。
版本說明:阿里雲ES支援多個版本,不同版本的功能存在差異。本文以
8.17版本進行案例示範。費用說明:本文樣本建立隨用隨付執行個體,會根據實際的資源使用量收取相應費用。完成本文案例,預計花費不超過
20元。Kibana:是靈活的資料分析及視覺化檢視,在Kibana中,您可搜尋及查看ES索引中的資料,並進行互動。
Restful API:可通過HTTP協議與ES叢集進行互動。本文的索引建立、資料插入及搜尋、索引刪除等相關操作均使用Restful API實現。
前提條件
已建立Virtual Private Cloud和虛擬交換器vSwitch。您可通過VPC和vSwitch保障ES執行個體的網路安全、與其他資源互連、實現高可用。
建立ES執行個體時需選擇合適的VPC和vSwitch。VPC、vSwitch需要與ES執行個體同地區、同可用性區域,並且執行個體建立成功後不可更改。
本文樣本VPC及vSwitch的核心參數配置如下。
類別 | 配置樣本 |
VPC |
|
vSwitch | 可用性區域:杭州可用性區域I。 |
操作流程
使用阿里雲ES搭建叢集並完成資料搜尋的相關操作流程如下。
建立執行個體:阿里雲ES執行個體是一個託管式的ES服務,提供了一個便於使用、可擴充且穩定的搜尋引擎平台。我們所要執行的資料存放區、搜尋與分析等所有操作均需在執行個體中完成。
訪問執行個體:通過Kibana訪問執行個體,後續會基於Kibana完成執行個體的索引建立、文檔建立、資料插入及搜尋等操作。
建立索引:用於後續儲存本文樣本的理財產品資訊,並定義該資訊中各個欄位的搜尋類型及分詞方式。
說明索引是ES用於儲存相關文檔的邏輯容器,可協助您組織和管理資料,顯著提升查詢效率。
建立文檔並插入資料:將本文樣本的理財產品資訊以文檔形式插入至上一步建立的索引中,以便後續查詢。
搜尋資料:可通過全文檢索搜尋、按條件搜尋等方式查詢所需產品。
(可選)後續步驟:可按需執行測試索引刪除、資料移轉、叢集擴容或執行個體釋放等操作。
步驟一:建立執行個體
進入執行個體建立頁面。
配置執行個體資訊。
按如下表格配置執行個體資訊。
說明未提及的參數保持預設配置。更多建立執行個體的參數介紹,請參見建立Elasticsearch執行個體。
參數
描述
商品類型
選擇隨用隨付。
地區和可用性區域
選擇華東1(杭州)的可用性區域I。
可用性區域數量
選擇單可用性區域。
專用網路及虛擬交換器
選擇您在前提條件中建立的VPC及vSwitch。
執行個體類型及版本
選擇向量增強版的
8.17.0版本。執行個體名稱
配置為ES_test。
登入名稱及登入密碼
登入名稱預設為elastic,且不可更改;登入密碼自訂。
單擊立即購買,按照介面指引完成支付。支付完成後,執行個體開始建立。
說明建立過程預計耗時
20分鐘左右,請耐心等待。查看執行個體狀態。
在頂部功能表列選擇華東1(杭州)地區,單擊左側導覽列的Elasticsearch執行個體,即可在執行個體列表中查看所建立執行個體的狀態。
當執行個體狀態顯示正常,表示執行個體建立成功,您可繼續執行下述步驟。
步驟二:訪問執行個體
進入可視化控制。
在Elasticsearch執行個體列表單擊目標執行個體ID。
在左側導覽列單擊。
配置Kibana白名單。
本文樣本通過公網訪問Kibana。為避免訪問受限,需將您用戶端的IP地址加入Kibana的公網訪問白名單。
說明更多訪問Kibana的網路設定及常見問題,請參見配置Kibana公網或私網。
在Kibana地區,單擊修改配置。
單擊Kibana公網訪問白名單後的修改,按照介面指引,將您用戶端的IP地址加入白名單。
進入Kibana開發工具。
通過Kibana的開發工具可訪問ES執行個體,完成執行個體的索引建立、文檔建立、資料插入及搜尋等操作。
返回可視化控制頁面,單擊Kibana地區的公網入口。
輸入使用者名稱及密碼,單擊登入。
說明使用者名稱為elastic,密碼為您在步驟一中自訂的密碼。
在歡迎頁面單擊自己瀏覽。
在左上方單擊
表徵圖,選擇Management > 開發工具,進入開發工具控制台。
測試訪問結果。
在控制台頁簽執行
GET /命令,訪問ES執行個體。出現如下結果,表示訪問成功。
步驟三:建立索引
建立索引product_info,並配置對productName、describe欄位進行全文檢索搜尋及粗粒度分詞,對annual_rate欄位進行精確匹配,範例程式碼如下。
PUT /product_info
{
"settings": {
"number_of_shards": 5,
"number_of_replicas": 1
},
"mappings": {
"properties": {
"productName": {
"type": "text",
"analyzer": "ik_smart"
},
"annual_rate":{
"type":"keyword"
},
"describe": {
"type": "text",
"analyzer": "ik_smart"
}
}
}
}返回如下結果,表示索引建立成功。
步驟四:建立文檔並插入資料
使用_bulkAPI,批量向product_info索引插入多條文檔,每條文檔的內容為理財產品資訊的相關資料(包含理財產品的名稱、年化利率、描述欄位)。範例程式碼如下。
{"index":{}}表示插入一條新文檔,ES會自動為該文檔產生一個唯一ID。
POST /product_info/_bulk
{"index":{}}
{"productName":"理財產品A","annual_rate":"3.2200%","describe":"180天定期理財,最低20000起投,收益穩定,可以自助選擇訊息推送"}
{"index":{}}
{"productName":"理財產品B","annual_rate":"3.1100%","describe":"90天定投產品,最低10000起投,每天收益到賬訊息推送"}
{"index":{}}
{"productName":"理財產品C","annual_rate":"3.3500%","describe":"270天定投產品,最低40000起投,每天收益立即到賬訊息推送"}
{"index":{}}
{"productName":"理財產品D","annual_rate":"3.1200%","describe":"90天定投產品,最低12000起投,每天收益到賬訊息推送"}
{"index":{}}
{"productName":"理財產品E","annual_rate":"3.0100%","describe":"30天定投產品推薦,最低8000起投,每天收益會訊息推送"}
{"index":{}}
{"productName":"理財產品F","annual_rate":"2.7500%","describe":"熱門短期產品,3天短期,無須任何手續約用,最低500起投,通過簡訊通知擷取收益訊息"}返回結果中包含"errors": false,表示資料插入成功。
步驟五:搜尋資料
情境一:全文檢索搜尋
樣本使用match查詢,對describe欄位執行關鍵字匹配,搜尋product_info索引中描述內容包含每天收益到賬訊息推送的所有產品,代碼如下。
GET /product_info/_search
{
"query": {
"match": {
"describe": "每天收益到賬訊息推送"
}
}
}情境二:按條件搜尋
樣本使用range查詢,在 product_info 索引中搜尋年化率在3.0000%~3.1300%之間的產品,代碼如下。
GET /product_info/_search
{
"query": {
"range": {
"annual_rate": {
"gte": "3.0000%",
"lte": "3.1300%"
}
}
}
}(可選)後續步驟
刪除索引
執行如下代碼,刪除本文建立的測試索引。
DELETE /product_info返回結果如下。
遷移資料及擴容叢集
釋放執行個體
若ES執行個體後續無需使用,請及時釋放,避免浪費資源併產生額外費用。
執行個體釋放後,資料無法恢複,請謹慎操作,建議釋放執行個體前先備份資料。執行個體釋放後將停止計費。