大數據

Elasticsearch Cloud 服務-Elastic Stack 實戰手冊

本文將基於阿里雲 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. 單擊下一步:確認訂單,然後預覽實例配置。

本教程的實例配置預覽如下圖。

  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。

  1. 在左側導航欄,單擊 Dev Tools(開發工具),再單擊 Go to work。
  2. 在 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 DSLhttps://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. 在實例列表中,單擊操作列下的更多 > 釋放實例。

  1. 在彈出的對話框中,單擊確認。

Leave a Reply

Your email address will not be published. Required fields are marked *