本文指引您快速建立一個Elasticsearch執行個體,並訪問該執行個體,使用Restful API完成建立索引、建立文檔並插入資料、搜尋資料、刪除索引等操作。
前提條件
登入阿里雲帳號。 具體操作,請參見帳號註冊。
情境說明
某金融服務企業通過線上平台管理理財專案,之前使用傳統資料庫為客戶提供理財產品的搜尋功能。由於收益信用良好,得到了不少客戶的青睞,但隨之而來的是業務體系逐步擴大,客戶資訊也逐步增加,使得傳統型資料庫的缺陷越來越明顯。為了改善搜尋響應遲緩、精準性無法保障、資料服務裝置效能降低等狀況,該企業引入了Elasticsearch產品,為使用者提供理財產品的搜尋功能。Elasticsearch有效地解決了之前傳統資料庫存在的問題,同時提升了客戶滿意度。本文以此情境為例,為您介紹如何使用Elasticsearch搭建叢集和搜尋資料。
本情境假設該企業的理財產品資訊如下所示。
{
"products":[
{"productName":"理財產品A","annual_rate":"3.2200%","describe":"180天定期理財,最低20000起投,收益穩定,可以自助選擇訊息推送"}
{"productName":"理財產品B","annual_rate":"3.1100%","describe":"90天定投產品,最低10000起投,每天收益到賬訊息推送"}
{"productName":"理財產品C","annual_rate":"3.3500%","describe":"270天定投產品,最低40000起投,每天收益立即到賬訊息推送"}
{"productName":"理財產品D","annual_rate":"3.1200%","describe":"90天定投產品,最低12000起投,每天收益到賬訊息推送"}
{"productName":"理財產品E","annual_rate":"3.0100%","describe":"30天定投產品推薦,最低8000起投,每天收益會訊息推送"}
{"productName":"理財產品F","annual_rate":"2.7500%","describe":"熱門短期產品,3天短期,無須任何手續約用,最低500起投,通過簡訊通知擷取收益訊息"}
]
}
操作流程
建立一個Elasticsearch執行個體。
等待執行個體狀態正常後,通過Kibana訪問Elasticsearch執行個體。
通過Restful API完成索引建立。
通過Restful API在文檔中批量插入資料。
通過Restful API完成全文資料搜尋和按查詢條件搜尋。
如果不再使用索引,可以通過命令刪除對應索引,避免浪費資源。
如果不再需要執行個體,可以釋放執行個體。執行個體釋放後資料無法恢複,建議釋放執行個體前先備份資料。
操作視頻
步驟一:建立執行個體
前往執行個體建立頁面。
在購買頁面完成執行個體配置。
參數
說明
付費模式
訂用帳戶:長期使用ES執行個體,建議選擇訂用帳戶(一次性付費)。優勢是比隨用隨付更實惠。
隨用隨付:短期使用ES執行個體,在程式研發或功能測試期間,建議選擇隨用隨付(按小時付費)。優勢是可隨時釋放執行個體,停止計費。
您可以先建立隨用隨付的執行個體,確認執行個體符合要求後轉訂用帳戶。
說明關於計費模式的更多資訊,請參見計費方式及轉化。
地區和可用性區域
根據業務情況選擇地區,執行個體建立後地區不能更換:
資源部署地區和使用者的距離越近,網路時延越低,訪問速度越快。
如果ES執行個體需要與其他雲產品實現內網互連,請將其部署在同一地區。
可用性區域數量
單可用性區域(預設):普通部署模式,適用於非關鍵任務型工作。
兩個可用性區域:跨可用性區域容災部署模式,適用於生產型工作。
三個可用性區域:高可用部署模式,適用於具有更高可用性要求的生產型工作。
說明部署多可用性區域時,不需要您手動選擇多個可用性區域,系統會自動設定對應個數的可用性區域。
更多資訊,請參見部署和使用跨可用性區域執行個體。
網路類型
目前僅支援專用網路。
專用網路
選擇對應地區下的專用網路。
說明如果ES執行個體需要與其他雲產品實現內網互連,建議將其部署在同一專用網路下。
如果沒有符合業務需求的專用網路,請先建立專用網路。操作,請參見建立專用網路和交換器。
虛擬交換器
列表中只顯示指定專用網路下,與ES執行個體在同一可用性區域下的虛擬交換器。
說明如果沒有符合業務需求的虛擬交換器,請先建立交換器。操作,請參見建立專用網路和交換器。
執行個體類型
核心增強版:在開源基礎上提供深度最佳化的AliES核心引擎,提供10+增強特性。
通用商業版:100%相容開源Elasticsearch,免費提供全部X-pack進階特性。
更多資訊,請參見版本特性和AliES核心增強版功能介紹。
Elasticsearch版本
核心增強版:支援7.10、7.16和6.7版本。
通用商業版:支援8.13、8.9、8.5、7.7、6.8、6.3、5.6和5.5版本。
更多資訊,請參見版本特性對比和Release Note。
說明不同版本支援的地區和可用性區域可能存在一定差異,具體請以購買頁為準。
節點配置
根據業務需要配置各節點。
說明如果您不知道需要購買什麼規格的節點,請先評估ES執行個體所需規格和容量,請參見規格容量評估。
各節點配置的詳細說明,請參見ES執行個體節點配置說明。
資源群組
通過資源群組可以對ES執行個體進行分組管理。詳細資料,請參見資源分組和授權。
登入名稱
預設帳號為elastic,不可更改。elastic帳號可以用來訪問ES執行個體和登入Kibana控制台。
說明修改elastic帳號的密碼,在密碼生效期間會影響服務訪問,因此不建議在業務中直接使用elastic帳號。如果程式中需要指定ES執行個體的帳號和密碼,建議在Kibana控制台建立具有相應許可權的角色和使用者。具體操作,請參見通過Elasticsearch X-Pack角色管理實現使用者權限管控。
登入密碼
elastic帳號對應的密碼,不可為空白。
購買時間長度
如果付費模式為訂用帳戶,需要選擇購買時間長度。
建議您選中到期自動續約功能,避免資源到期執行個體停機或釋放,影響正常使用。
按月購買執行個體,自動續約周期為1個月。
按年購買執行個體,自動續約周期為1年。
單擊立即購買,進入確認訂單頁面,確認執行個體配置無誤後,選中服務合約,單擊立即開通。
在Elasticsearch執行個體頁面的頂部功能表列,選擇建立執行個體的地區,在執行個體列表中查看已建立的ES執行個體。
執行個體建立後,需要一段時間才會生效。時間長短與您的叢集規格、資料結構和大小等相關,一般在小時層級。您可以在執行個體列表的狀態列,查看執行個體狀態。
步驟二:通過Kibana訪問執行個體
等待執行個體狀態變為正常,即可執行以下步驟。
您也可以通過curl命令和用戶端方式訪問執行個體。具體操作,請參見訪問執行個體。
在Elasticsearch執行個體列表中,單擊目標執行個體ID。
在左側導覽列,選擇 。
可選:在Kibana地區,單擊修改配置,配置Kibana的公網訪問白名單,在IP白名單中加入您用戶端的IP地址。具體操作,請參見配置Kibana公網或私網訪問白名單。
首次從公網入口進入Kibana控制台且公網訪問配置未修改時,系統會提示您修改配置,您可根據頁面提示進行修改。
返回叢集管理頁面,在Kibana地區,單擊公網入口。
在登入頁面輸入帳號和密碼,單擊登入。
帳號為elastic,密碼為您建立執行個體時設定的密碼。如果忘記可重設密碼,具體操作請參見重設執行個體訪問密碼。
在登入成功頁面,單擊自己瀏覽。
單擊Kibana頁面左上方的表徵圖,選擇Management > 開發工具(Dev Tools)。
在Console頁簽下,執行如下命令訪問Elasticsearch執行個體。
GET /
訪問成功後,結果如下。
{ "name": "es-cn-wuf3pxg630005****-data-h-0", "cluster_name": "es-cn-wuf3pxg63000****", "cluster_uuid": "1kaVmF46T2yOapAA6M****", "version": { "number": "8.9.1", "build_flavor": "default", "build_type": "docker", "build_hash": "652eb44fa71049c1fcdc08c967ef9f751d98****", "build_date": "2023-08-18T06:51:36.666651565Z", "build_snapshot": false, "lucene_version": "9.7.0", "minimum_wire_compatibility_version": "7.17.0", "minimum_index_compatibility_version": "7.0.0" }, "tagline": "You Know, for Search" }
步驟三:建立索引
建立一個名稱為product_info的索引:
7.0及以上版本
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"
}
}
}
}
7.0以下版本
PUT /product_info
{
"settings": {
"number_of_shards": 5,
"number_of_replicas": 1
},
"mappings": {
"products": {
"properties": {
"productName": {
"type": "text",
"analyzer": "ik_smart"
},
"annual_rate":{
"type":"keyword"
},
"describe": {
"type": "text",
"analyzer": "ik_smart"
}
}
}
}
}
官方Elasticsearch 7.0及以上版本將移除映射中的type類型定義,之前版本會繼續支援。如果在7.0及以上版本中使用了type,會出現"type": "mapper_parsing_exception"
的錯誤提示。詳細資料及解決方案,請參見Removal of mapping types。
以上樣本建立了一個名稱為product_info的索引。索引的類型為products(7.0及以上版本為_doc),並包含了productName、annual_rate和describe欄位。
建立成功後,返回結果如下。
{
"acknowledged" : true,
"shards_acknowledged" : true,
"index" : "product_info"
}
步驟四:建立文檔並插入資料
使用_bulk API,批量插入資料。
7.0以下版本
POST /product_info/products/_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起投,通過簡訊通知擷取收益訊息"}
7.x版本
POST /product_info/_doc/_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起投,通過簡訊通知擷取收益訊息"}
8.x版本
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
,說明資料插入成功。
步驟五:搜尋資料
以下命令僅適用於Elasticsearch 7.0以下版本,7.x版本需要將products修改為_doc,8.x版本需要去掉products。
全文檢索搜尋
搜尋描述內容包含
每天收益到賬訊息推送
的所有產品。GET /product_info/products/_search { "query": { "match": { "describe": "每天收益到賬訊息推送" } } }
搜尋成功後,返回結果如下。
{ "took" : 21, "timed_out" : false, "_shards" : { "total" : 5, "successful" : 5, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : 6, "max_score" : 1.3968885, "hits" : [ { "_index" : "product_info", "_type" : "products", "_id" : "WLvWYXAB8Rql5AUxLqUU", "_score" : 1.3968885, "_source" : { "productName" : "理財產品B", "annual_rate" : "3.1100%", "describe" : "90天定投產品,最低10000起投,每天收益到賬訊息推送" } }, { "_index" : "product_info", "_type" : "products", "_id" : "WrvWYXAB8Rql5AUxLqUU", "_score" : 1.3968885, "_source" : { "productName" : "理財產品D", "annual_rate" : "3.1200%", "describe" : "90天定投產品,最低12000起投,每天收益到賬訊息推送" } }, { "_index" : "product_info", "_type" : "products", "_id" : "WbvWYXAB8Rql5AUxLqUU", "_score" : 1.3547361, "_source" : { "productName" : "理財產品C", "annual_rate" : "3.3500%", "describe" : "270天定投產品,最低40000起投,每天收益立即到賬訊息推送" } }, { "_index" : "product_info", "_type" : "products", "_id" : "W7vWYXAB8Rql5AUxLqUU", "_score" : 1.1507283, "_source" : { "productName" : "理財產品E", "annual_rate" : "3.0100%", "describe" : "30天定投產品推薦,最低8000起投,每天收益會訊息推送" } }, { "_index" : "product_info", "_type" : "products", "_id" : "XLvWYXAB8Rql5AUxLqUU", "_score" : 0.5753642, "_source" : { "productName" : "理財產品F", "annual_rate" : "2.7500%", "describe" : "熱門短期產品,3天短期,無須任何手續約用,最低500起投,通過簡訊通知擷取收益訊息" } }, { "_index" : "product_info", "_type" : "products", "_id" : "V7vWYXAB8Rql5AUxLqUU", "_score" : 0.31854028, "_source" : { "productName" : "理財產品A", "annual_rate" : "3.2200%", "describe" : "180天定期理財,最低20000起投,收益穩定,可以自助選擇訊息推送" } } ] } }
說明Elasticsearch支援通過分詞器搜尋資料,同時也支援評分排序。在上文的返回結果中,前兩條商品資訊中都出現了
每天收益到賬訊息推送
,後兩條商品資訊中只出現了關鍵詞訊息推送
,所以越靠前的搜尋結果的匹配度越高,分數也越高。按查詢條件搜尋
搜尋年化率在3.0000%到3.1300%之間的產品。
GET /product_info/products/_search { "query": { "range": { "annual_rate": { "gte": "3.0000%", "lte": "3.1300%" } } } }
執行成功後,返回結果如下。
{ "took" : 10, "timed_out" : false, "_shards" : { "total" : 5, "successful" : 5, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : 2, "max_score" : 1.0, "hits" : [ { "_index" : "product_info", "_type" : "products", "_id" : "WLvWYXAB8Rql5AUxLqUU", "_score" : 1.0, "_source" : { "productName" : "理財產品B", "annual_rate" : "3.1100%", "describe" : "90天定投產品,最低10000起投,每天收益到賬訊息推送" } }, { "_index" : "product_info", "_type" : "products", "_id" : "WrvWYXAB8Rql5AUxLqUU", "_score" : 1.0, "_source" : { "productName" : "理財產品D", "annual_rate" : "3.1200%", "describe" : "90天定投產品,最低12000起投,每天收益到賬訊息推送" } } ] } }
說明Elasticsearch會根據條件搜尋到符合預期的產品,同時以升序排列展示。
更多搜尋方式,請參見Query DSL。
(可選)步驟六:刪除索引
瞭解了Elasticsearch的使用方法後,您可以執行如下命令,刪除對應索引,避免浪費資源。
索引刪除後不可恢複,請謹慎操作。
DELETE /product_info
刪除成功後,返回如下結果。
{
"acknowledged" : true
}
(可選)步驟七:釋放執行個體
如果您不再需要隨用隨付的執行個體,可以將其釋放。釋放後,執行個體停止計費,資料不可恢複。
執行個體釋放後資料無法恢複,建議您在釋放之前先備份資料。具體操作,請參見資料備份概述。
在Elasticsearch執行個體列表中,選擇目標執行個體操作列下的 。
在彈出的對話方塊中,單擊確認。
退訂不再需要繼續使用的訂用帳戶的阿里雲ES執行個體,請參見退訂和退款說明。