天天看點

阿裡雲 Elasticsearch 服務-Elastic Stack 實戰手冊

阿裡雲 Elasticsearch 服務-Elastic Stack 實戰手冊
https://developer.aliyun.com/topic/download?id=1295 · 更多精彩内容,請下載下傳閱讀全本《Elastic Stack實戰手冊》 https://developer.aliyun.com/topic/download?id=1295 https://developer.aliyun.com/topic/es100 · 加入創作人行列,一起交流碰撞,參與技術圈年度盛事吧 https://developer.aliyun.com/topic/es100

編輯:大禹

本文将基于阿裡雲 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起投,通過短信提示擷取收益消息"}
]
}           

步驟一:建立執行個體

  1. 前往執行個體建立頁面: https://www.aliyun.com/product/bigdata/product/elasticsearch
  2. 在開通頁面的前四個配置頁面,完成執行個體啟動配置。本教程使用的配置如下,未提及的配置保持預設。
配置頁面 配置項 示例 說明
基礎配置 付費模式 按量付費 在前期程式研發或功能測試期間,建議購買按量付費類型的執行個體測試。說明 開通包年包月類型的執行個體可以享受優惠條件。
選擇服務 通用商業版,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控制台時,需要輸入該密碼。
場景初始化配置 通用場景 選擇後,對應模闆的配置會自動應用到叢集中。
  1. 單擊下一步:确認訂單,然後預覽執行個體配置。

本教程的執行個體配置預覽如下圖。

阿裡雲 Elasticsearch 服務-Elastic Stack 實戰手冊
  1. 勾選服務協定,單擊立即購買。
  2. 提示開通成功後,單擊管理控制台,進入阿裡雲 Elasticsearch 的控制台概覽頁面。
  3. 在左側導航欄,單擊 Elasticsearch 執行個體。
  4. 在頂部菜單欄,選擇資源和地域,然後在執行個體清單中檢視建立成功的阿裡雲 Elasticsearch 執行個體。

步驟二:通路執行個體

等待執行個體狀态變為正常,即可執行以下步驟,通過 Kibana 通路執行個體。

您也可以通過 curl 指令和用戶端方式通路執行個體。

具體操作,請參見快速通路與配置: https://help.aliyun.com/document_detail/134862.htm?spm=a2c4g.11186623.2.21.33de9184Q0R30l#section-dy2-a9s-1ym
  1. 在執行個體清單中,單擊目标執行個體ID。
  2. 在左側導航欄,單擊可視化控制。
  3. 在 Kibana 區域中,單擊進入控制台。
  4. 在登入頁面輸入賬号和密碼,單擊登入。賬号為 elastic,密碼為您建立執行個體時設定的密碼。
如果忘記可重置,重置密碼的具體操作和注意事項,請參見重置執行個體通路密碼: https://help.aliyun.com/document_detail/159883.htm#task-2458093
  1. 在登入成功頁面,單擊 Explore on my own。
阿裡雲 Elasticsearch 服務-Elastic Stack 實戰手冊
  1. 在左側導航欄,單擊 Dev Tools(開發工具),再單擊 Go to work。
  2. 在 Console 中,執行如下指令通路 Elasticsearch 執行個體。
GET /           
阿裡雲 Elasticsearch 服務-Elastic Stack 實戰手冊

通路成功後,結果如下。

{
  "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

,說明資料插入成功。

阿裡雲 Elasticsearch 服務-Elastic Stack 實戰手冊

步驟五:搜尋資料

全文搜尋搜尋描述内容包含

每天收益到賬消息推送

的所有産品。

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
  1. 在執行個體清單中,單擊操作列下的更多 > 釋放執行個體。
阿裡雲 Elasticsearch 服務-Elastic Stack 實戰手冊
  1. 在彈出的對話框中,單擊确認。