全部產品
Search
文件中心

Elasticsearch:快速入門

更新時間:Jul 18, 2024

本文指引您快速建立一個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起投,通過簡訊通知擷取收益訊息"}
  ]
}

操作流程

  1. 步驟一:建立執行個體

    建立一個Elasticsearch執行個體。

  2. 步驟二:通過Kibana訪問執行個體

    等待執行個體狀態正常後,通過Kibana訪問Elasticsearch執行個體。

  3. 步驟三:建立索引

    通過Restful API完成索引建立。

  4. 步驟四:建立文檔並插入資料

    通過Restful API在文檔中批量插入資料。

  5. 步驟五:搜尋資料

    通過Restful API完成全文資料搜尋和按查詢條件搜尋。

  6. (可選)步驟六:刪除索引

    如果不再使用索引,可以通過命令刪除對應索引,避免浪費資源。

  7. (可選)步驟七:釋放執行個體

    如果不再需要執行個體,可以釋放執行個體。執行個體釋放後資料無法恢複,建議釋放執行個體前先備份資料。

操作視頻

步驟一:建立執行個體

  1. 前往執行個體建立頁面

  2. 在購買頁面完成執行個體配置。

    參數

    說明

    付費模式

    • 訂用帳戶:長期使用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執行個體進行分組管理。詳細資料,請參見資源分組和授權

    登入名稱

    預設帳號為elastic,不可更改。elastic帳號可以用來訪問ES執行個體和登入Kibana控制台。

    說明

    修改elastic帳號的密碼,在密碼生效期間會影響服務訪問,因此不建議在業務中直接使用elastic帳號。如果程式中需要指定ES執行個體的帳號和密碼,建議在Kibana控制台建立具有相應許可權的角色和使用者。具體操作,請參見通過Elasticsearch X-Pack角色管理實現使用者權限管控

    登入密碼

    elastic帳號對應的密碼,不可為空白。

    購買時間長度

    如果付費模式為訂用帳戶,需要選擇購買時間長度。

    建議您選中到期自動續約功能,避免資源到期執行個體停機或釋放,影響正常使用。

    • 按月購買執行個體,自動續約周期為1個月。

    • 按年購買執行個體,自動續約周期為1年。

  3. 單擊立即購買,進入確認訂單頁面,確認執行個體配置無誤後,選中服務合約,單擊立即開通

  4. Elasticsearch執行個體頁面的頂部功能表列,選擇建立執行個體的地區,在執行個體列表中查看已建立的ES執行個體。

    執行個體建立後,需要一段時間才會生效。時間長短與您的叢集規格、資料結構和大小等相關,一般在小時層級。您可以在執行個體列表的狀態列,查看執行個體狀態。

步驟二:通過Kibana訪問執行個體

等待執行個體狀態變為正常,即可執行以下步驟。

說明

您也可以通過curl命令和用戶端方式訪問執行個體。具體操作,請參見訪問執行個體

  1. 在Elasticsearch執行個體列表中,單擊目標執行個體ID。

  2. 在左側導覽列,選擇配置與管理 > 可視化控制

  3. 可選:Kibana地區,單擊修改配置,配置Kibana的公網訪問白名單,在IP白名單中加入您用戶端的IP地址。具體操作,請參見配置Kibana公網或私網訪問白名單

    首次從公網入口進入Kibana控制台且公網訪問配置未修改時,系統會提示您修改配置,您可根據頁面提示進行修改。

  4. 返回叢集管理頁面,在Kibana地區,單擊公網入口

  5. 在登入頁面輸入帳號和密碼,單擊登入。

    帳號為elastic,密碼為您建立執行個體時設定的密碼。如果忘記可重設密碼,具體操作請參見重設執行個體訪問密碼

  6. 在登入成功頁面,單擊自己瀏覽

  7. 單擊Kibana頁面左上方的image表徵圖,選擇Management > 開發工具(Dev Tools)。

  8. 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),並包含了productNameannual_ratedescribe欄位。

建立成功後,返回結果如下。

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

(可選)步驟七:釋放執行個體

如果您不再需要隨用隨付的執行個體,可以將其釋放。釋放後,執行個體停止計費,資料不可恢複。

警告

執行個體釋放後資料無法恢複,建議您在釋放之前先備份資料。具體操作,請參見資料備份概述

  1. 在Elasticsearch執行個體列表中,選擇目標執行個體操作列下的image > 釋放執行個體

  2. 在彈出的對話方塊中,單擊確認。

說明

退訂不再需要繼續使用的訂用帳戶的阿里雲ES執行個體,請參見退訂和退款說明

後續步驟