本文將基於阿里雲 Elasticsearch,通過快速創建、訪問實例,並使用 Restful API,完成創建索引、創建文檔、插入數據、搜索數據、刪除索引等操作,從而體驗 Cloud 雲服務。
阿里雲Elasticsearch兼容開源ELK功能,提供免運維全託管服務的彈性雲搜索與分析引擎,致力於數據庫加速、數據分析、信息檢索、智能運維監控等場景服務;獨有的雲原生高性能內核、達摩院NLP分詞、向量檢索、智能運維、免費X-Pack高級商業特性等能力,全面提升企業應用效率,降低成本。
前提條件
- 註冊阿里雲賬號。
具體操作,請參見賬號註冊:https://account.aliyun.com/register/register.html
- 創建專有網絡和虛擬交換機。
具體操作,請參見搭建IPv4專有網絡:https://help.aliyun.com/document_detail/65430.htm#task-1512598
- 完成規格容量評估。
具體操作,請參見規格容量評估:https://help.aliyun.com/document_detail/72660.htm#concept-dq4-bmk-zgb
實踐背景
某金融服務企業通過線上平臺管理理財項目,之前使用傳統數據庫為客戶提供理財產品的搜索功能。由於收益信用良好,得到了不少客戶的青睞,但隨之而來的是業務體系逐步擴大,客戶信息也逐步增加,使得傳統型數據庫的缺陷越來越明顯。為了改善搜索響應遲緩、精準性無法保障、數據服務設備性能降低等狀況,該企業引入了阿里雲 Elasticsearch 產品,為用戶提供理財產品的搜索功能。阿里雲 Elasticsearch 有效地解決了之前傳統數據庫存在的問題,同時提升了客戶滿意度。本文以此場景為例,為您介紹如何使用阿里雲 Elasticsearch 搭建集群和搜索數據。
本場景假設該企業的理財產品信息如下所示。
{
"products":[
{"productName":"大健康天天理財","annual_rate":"3.2200%","describe":"180天定期理財,最低20000起投,收益穩定,可以自助選擇消息推送"}
{"productName":"西部通寶","annual_rate":"3.1100%","describe":"90天定投產品,最低10000起投,每天收益到賬消息推送"}
{"productName":"安詳畜牧產業","annual_rate":"3.3500%","describe":"270天定投產品,最低40000起投,每天收益立即到賬消息推送"}
{"productName":"5G設備採購月月盈","annual_rate":"3.1200%","describe":"90天定投產品,最低12000起投,每天收益到賬消息推送"}
{"productName":"新能源動力理財","annual rate":"3.0100%","describe":"30天定投產品推薦,最低8000起投,每天收益會消息推送"}
{"productName":"微貸賺","annual_rate":"2.7500%","describe":"熱門短期產品,3天短期,無須任何手續費用,最低500起投,通過短信提示獲取收益消息"}
]
}
步驟一:創建實例
- 前往實例創建頁面:https://www.aliyun.com/product/bigdata/product/elasticsearch
- 在開通頁面的前四個配置頁面,完成實例啟動配置。本教程使用的配置如下,未提及的配置保持默認。
配置頁面 | 配置項 | 示例 | 說明 |
---|---|---|---|
基礎配置 | 付費模式 | 按量付費 | 在前期程序研發或功能測試期間,建議購買按量付費類型的實例測試。說明 開通包年包月類型的實例可以享受優惠條件。 |
選擇服務 | 通用商業版,7.10 | 阿里雲 Elasticsearch 通用商業版包含全部 X-pack 高級特性,致力於數據分析和數據搜索等場景服務。 | |
集群配置 | 地域和可用區 | 阿里雲 Elasticsearch 支持的地域和可用區,請參見地域和可用區:https://help.aliyun.com/document_detail/97672.htm#section-iaw-kz6-ha2注意 所選可用區下必須存在專有網絡和虛擬交換機。 | |
可用區數量 | 單可用區 | ||
實例規格 | 數據節點: | 新用戶可享受 2C4G 的首月 30 天免費試用 | |
網絡及系統配置 | 網絡類型 | 專有網絡 | 默認為專有網絡,不可更改。 |
專有網絡 | tf-testAcccn-hangzhou3274 / vpc-bp16k1dvzxtmagcva** | 選擇對應區域下的專有網絡。 | |
虛擬交換機 | tf-testAcccn-hangzhou3274 / vsw-bp1k4ec6s7sjdbudw** | 只能顯示所選專有網絡中,與實例在相同可用區下的虛擬交換機。 | |
登錄名 | elastic | 默認為 elastic,不可更改。 | |
登錄密碼 | 自定義密碼 | 請記錄該配置,在登錄 Kibana控制檯時,需要輸入該密碼。 | |
場景初始化配置 | 通用場景 | 選擇後,對應模板的配置會自動應用到集群中。 |
- 單擊下一步:確認訂單,然後預覽實例配置。
本教程的實例配置預覽如下圖。
- 勾選服務協議,單擊立即購買。
- 提示開通成功後,單擊管理控制檯,進入阿里雲 Elasticsearch 的控制檯概覽頁面。
- 在左側導航欄,單擊 Elasticsearch 實例。
- 在頂部菜單欄,選擇資源和地域,然後在實例列表中查看創建成功的阿里雲 Elasticsearch 實例。
步驟二:訪問實例
等待實例狀態變為正常,即可執行以下步驟,通過 Kibana 訪問實例。
您也可以通過 curl 命令和客戶端方式訪問實例。
具體操作,請參見快速訪問與配置:https://help.aliyun.com/document_detail/134862.htm?spm=a2c4g.11186623.2.21.33de9184Q0R30l#section-dy2-a9s-1ym
- 在實例列表中,單擊目標實例ID。
- 在左側導航欄,單擊可視化控制。
- 在 Kibana 區域中,單擊進入控制檯。
- 在登錄頁面輸入賬號和密碼,單擊登錄。賬號為 elastic,密碼為您創建實例時設置的密碼。
如果忘記可重置,重置密碼的具體操作和注意事項,請參見重置實例訪問密碼:https://help.aliyun.com/document_detail/159883.htm#task-2458093
- 在登錄成功頁面,單擊 Explore on my own。
- 在左側導航欄,單擊 Dev Tools(開發工具),再單擊 Go to work。
- 在 Console 中,執行如下命令訪問 Elasticsearch 實例。
GET /
訪問成功後,結果如下。
{
"name" : "tgeAvZe",
"cluster_name" : "es-cn-nif1z64qj003g****",
"cluster_uuid" : "IZmmd9IGTmKzqiZiyz****",
"version" : {
"number" : "6.7.0",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "c9c0c3a",
"build_date" : "2020-12-01T08:00:27.556078Z",
"build_snapshot" : false,
"lucene_version" : "7.7.0",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}
步驟三:創建索引
創建一個名稱為 product_info 的索引:
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"
}
}
}
}
以上示例創建了一個名稱為 product_info 的索引。索引的類型為 products(7.0及以上版本為_doc),幷包含了 productName、annual_rate 和 describe 字段。
創建成功後,返回結果如下。
{
"acknowledged" : true,
"shards_acknowledged" : true,
"index" : "product_info"
}
步驟四:創建文檔並插入數據
使用 _bulk API,批量插入數據。
POST /product_info/_doc/_bulk
{"index":{}}
{"productName":"大健康天天理財","annual_rate":"3.2200%","describe":"180天定期理財,最低20000起投,收益穩定,可以自助選擇消息推送"}
{"index":{}}
{"productName":"西部通寶","annual_rate":"3.1100%","describe":"90天定投產品,最低10000起投,每天收益到賬消息推送"}
{"index":{}}
{"productName":"安詳畜牧產業","annual_rate":"3.3500%","describe":"270天定投產品,最低40000起投,每天收益立即到賬消息推送"}
{"index":{}}
{"productName":"5G設備採購月月盈","annual_rate":"3.1200%","describe":"90天定投產品,最低12000起投,每天收益到賬消息推送"}
{"index":{}}
{"productName":"新能源動力理財","annual rate":"3.0100%","describe":"30天定投產品推薦,最低8000起投,每天收益會消息推送"}
{"index":{}}
{"productName":"微貸賺","annual_rate":"2.7500%","describe":"熱門短期產品,3天短期,無須任何手續費用,最低500起投,通過短信提示獲取收益消息"}
如果返回顯示"errors" : false
,說明數據插入成功。
步驟五:搜索數據
全文搜索搜索描述內容包含每天收益到賬消息推送
的所有產品。
GET /product_info/_doc/_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" : "西部通寶",
"annual_rate" : "3.1100%",
"describe" : "90天定投產品,最低10000起投,每天收益到賬消息推送"
}
},
{
"_index" : "product_info",
"_type" : "products",
"_id" : "WrvWYXAB8Rql5AUxLqUU",
"_score" : 1.3968885,
"_source" : {
"productName" : "5G設備採購月月盈",
"annual_rate" : "3.1200%",
"describe" : "90天定投產品,最低12000起投,每天收益到賬消息推送"
}
},
{
"_index" : "product_info",
"_type" : "products",
"_id" : "WbvWYXAB8Rql5AUxLqUU",
"_score" : 1.3547361,
"_source" : {
"productName" : "安詳畜牧產業",
"annual_rate" : "3.3500%",
"describe" : "270天定投產品,最低40000起投,每天收益立即到賬消息推送"
}
},
{
"_index" : "product_info",
"_type" : "products",
"_id" : "W7vWYXAB8Rql5AUxLqUU",
"_score" : 1.1507283,
"_source" : {
"productName" : "新能源動力理財",
"annual rate" : "3.0100%",
"describe" : "30天定投產品推薦,最低8000起投,每天收益會消息推送"
}
},
{
"_index" : "product_info",
"_type" : "products",
"_id" : "XLvWYXAB8Rql5AUxLqUU",
"_score" : 0.5753642,
"_source" : {
"productName" : "微貸賺",
"annual_rate" : "2.7500%",
"describe" : "熱門短期產品,3天短期,無須任何手續費用,最低500起投,通過短信提示獲取收益消息"
}
},
{
"_index" : "product_info",
"_type" : "products",
"_id" : "V7vWYXAB8Rql5AUxLqUU",
"_score" : 0.31854028,
"_source" : {
"productName" : "大健康天天理財",
"annual_rate" : "3.2200%",
"describe" : "180天定期理財,最低20000起投,收益穩定,可以自助選擇消息推送"
}
}
]
}
}
阿里雲 Elasticsearch 支持通過分詞器搜索數據,同時也支持評分排序。在上文的返回結果中,前兩條商品信息中都出現了每天收益到賬消息推送,後兩條商品信息中只出現了關鍵詞消息推送,所以越靠前的搜索結果的匹配度越高,分數也越高。
- 按查詢條件搜索
搜索年化率在3.0000%到3.1300%之間的產品。
GET /product_info/_doc/_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" : "西部通寶",
"annual_rate" : "3.1100%",
"describe" : "90天定投產品,最低10000起投,每天收益到賬消息推送"
}
},
{
"_index" : "product_info",
"_type" : "products",
"_id" : "WrvWYXAB8Rql5AUxLqUU",
"_score" : 1.0,
"_source" : {
"productName" : "5G設備採購月月盈",
"annual_rate" : "3.1200%",
"describe" : "90天定投產品,最低12000起投,每天收益到賬消息推送"
}
}
]
}
}
Elasticsearch 會根據條件搜索到符合預期的產品,同時以降序排列展示
更多搜索方式,請參見Query DSL:https://www.elastic.co/guide/en/elasticsearch/reference/6.7/query-dsl.html?spm=a2c4g.11186623.2.27.33de9184S7oAZi
步驟六:刪除索引(可選)
瞭解了阿里雲Elasticsearch的使用方法後,您可以執行如下命令,刪除對應索引,避免浪費資源。
索引刪除後不可恢復,請謹慎操作。
DELETE /product_info
刪除成功後,返回如下結果。
{
"acknowledged" : true
}
步驟七:釋放實例(可選)
如果您不再需要實例,可以將其釋放。釋放後,實例停止計費,數據不可恢復。釋放操作只適用於按量付費實例。
實例釋放後數據無法恢復,建議您在釋放之前先備份數據。具體操作,請參見數據備份概述:https://help.aliyun.com/document_detail/106553.htm?spm=a2c4g.11186623.2.28.33de9184S7oAZi#concept-2038454
- 在實例列表中,單擊操作列下的更多 > 釋放實例。
- 在彈出的對話框中,單擊確認。