全部產品
Search
文件中心

Elasticsearch:通過DataWorks將PolarDB-X(DRDS)資料同步到阿里雲ES

更新時間:Nov 28, 2024

如果您需要對儲存在PolarDB-X(原DRDS升級版)中的資料進行全文檢索索引和語義分析等操作,可藉助Elasticsearch實現。通過DataWorks的Data Integration服務,實現最快分鐘級,將海量PolarDB-X資料同步到阿里雲ES中。

背景資訊

DataWorks是一個基於巨量資料引擎,整合資料開發、任務調度、資料管理等功能的全鏈路巨量資料開發治理平台。您可以通過DataWorks的同步任務,快速的將各種資料來源中的資料同步到阿里雲ES。

  • 支援同步的資料來源包括:

    • 阿里雲雲資料庫(MySQL、PostgreSQL、SQL Server、MongoDB、HBase)

    • 阿里雲PolarDB-X(原DRDS升級版)

    • 阿里雲MaxCompute

    • 阿里雲OSS

    • 阿里雲Tablestore

    • 自建HDFS、Oracle、FTP、DB2及以上資料庫類型的自建版本

  • 適用情境:

前提條件

說明
  • 僅支援將資料同步到阿里雲ES,不支援自建Elasticsearch。

  • PolarDB-X執行個體、ES執行個體和DataWorks工作空間所在地區需保持一致。

  • PolarDB-X執行個體、ES執行個體和DataWorks工作空間需要在同一時區下,否則同步與時間相關的資料時,同步前後的資料可能存在時區差。

費用說明

操作步驟

步驟一:準備來源資料

  1. 在阿里雲PolarDB-X 1.0執行個體中插入資料。

    具體操作步驟請參見執行SQL基本操作。本文使用的測試資料如下。測試資料

步驟二:購買並建立獨享資源群組

購買一個Data Integration獨享資源群組,並為該資源群組綁定專用網路和工作空間。獨享資源群組可以保證資料快速、穩定地傳輸。

  1. 登入DataWorks控制台

  2. 在頂部功能表列選擇相應地區後,在左側導覽列單擊資源群組

  3. 獨享資源群組頁簽下,單擊建立舊版整合資源群組

  4. DataWorks獨享資源購買頁面,獨享資源類型選擇獨享Data Integration資源,輸入資源群組名稱,單擊立即購買,購買獨享資源群組。

    更多配置資訊,請參見購買資源群組

  5. 在已建立的獨享資源群組的操作列,單擊網路設定,為該獨享資源群組綁定專用網路。具體操作,請參見綁定專用網路

    說明

    本文以獨享Data Integration資源群組通過VPC內網同步資料為例。關於通過公網同步資料,請參見添加白名單

    獨享資源需要與PolarDB-X執行個體和Elasticsearch執行個體的專用網路連通才能同步資料,因此需要分別綁定PolarDB-X執行個體和Elasticsearch執行個體所在的專用網路可用性區域交換器。查看執行個體所在專用網路資訊,請參見查看Elasticsearch執行個體的基本資料

    重要

    綁定專用網路後,您需要將專用網路的交換器網段加入到PolarDB-X、Elasticsearch執行個體的VPC私網訪問白名單中。具體操作,請參見配置Elastic search執行個體公網或私網訪問白名單

  6. 在頁面左上方,單擊返回表徵圖,返回資源群組列表頁面。

  7. 在已建立的獨享資源群組的操作列,單擊綁定工作空間,為該獨享資源群組繫結目標工作空間。

    具體操作,請參見綁定歸屬工作空間

步驟三:添加資料來源

將PolarDB-X和Elasticsearch資料來源接入DataWorks的Data Integration服務中。

  1. 進入DataWorks的Data Integration頁面。

    1. 登入DataWorks控制台

    2. 在左側導覽列,單擊工作空間

    3. 在目標工作空間的操作列,選擇快速進入 Data Integration

  2. 在左側導覽列,單擊資料來源

  3. 新增PolarDB-X資料來源。

  4. 資料來源列表頁面,單擊新增資料來源

  5. 新增資料來源頁面,搜尋並選擇DRDS

  6. 新增DRDS資料來源頁面,配置資料來源資訊並測試連通性。連通成功後,單擊完成

    更多資訊,請參見配置DRDS資料來源

  7. 使用同樣的方式添加Elasticsearch資料來源。配置詳情,請參見配置Elasticsearch資料來源

步驟四:配置並運行資料同步任務

資料離線同步任務將獨享資源群組作為一個可以執行任務的資源,獨享資源群組將擷取Data Integration服務中資料來源的資料,並將資料寫入Elasticsearch。

說明

有兩種方式可以配置離線同步任務,文本以嚮導模式配置離線同步任務為例。您也可以通過指令碼模式配置離線同步任務,詳情請參見通過指令碼模式配置離線同步任務Elasticsearch Writer

  1. 進入DataWorks的資料開發頁面。

    1. 登入DataWorks控制台

    2. 在左側導覽列,單擊工作空間

    3. 在目標工作空間的操作列,選擇快速進入 資料開發

  2. 建立一個離線同步任務。

    1. 在左側導覽列,單擊image表徵圖,選擇建立 > 建立商務程序,建立一個商務程序。

      image

    2. 按右鍵建立的商務程序,選擇建立節點 > 離線同步

    3. 建立節點對話方塊中,輸入節點名稱,單擊確認

  3. 配置網路與資源

    1. 資料來源地區,資料來源選擇DRDS,資料來源名稱選擇待同步的資料來源名稱。

    2. 我的資源群組地區,選擇獨享資源群組。

    3. 資料去向地區,資料去向選擇Elasticsearch,資料來源名稱選擇待同步的資料來源名稱。

  4. 單擊下一步。

  5. 配置任務。

    1. 資料來源地區,選擇待同步的表。

    2. 資料去向地區,配置資料去向的各參數。

    3. 欄位對應地區中,設定來源欄位目標欄位的映射關係。具體配置,請參見通過嚮導模式配置離線同步任務

      本樣本中,來源欄位保持預設,僅修改目標欄位。在目標欄位右側,單擊修改欄位表徵圖表徵圖,在對話方塊中輸入如下欄位配置。

      {"name":"Name","type":"text"}
      {"name":"Platform","type":"text"}
      {"name":"Year_of_Release","type":"date"}
      {"name":"Genre","type":"text"}
      {"name":"Publisher","type":"text"}
      {"name":"na_Sales","type":"float"}
      {"name":"EU_Sales","type":"float"}
      {"name":"JP_Sales","type":"float"}
      {"name":"Other_Sales","type":"float"}
      {"name":"Global_Sales","type":"float"}
      {"name":"Critic_Score","type":"long"}
      {"name":"Critic_Count","type":"long"}
      {"name":"User_Score","type":"float"}
      {"name":"User_Count","type":"long"}
      {"name":"Developer","type":"text"}
      {"name":"Rating","type":"text"}
    4. 通道控制地區,配置通道參數。

    詳細配置資訊,請參見通過嚮導模式配置離線同步任務

  6. 運行任務。

    1. (可選)配置任務調度屬性。在頁面右側,單擊調度配置,按照需求配置相應的調度參數。各配置的詳細說明請參見調度配置

    2. 在節點地區的右上方,單擊儲存表徵圖,儲存任務。

    3. 在節點地區的右上方,單擊提交表徵圖,提交任務。

      如果您配置了任務調度屬性,任務會定期自動執行。您還可以在節點地區的右上方,單擊運行表徵圖,立即運行任務。

      作業記錄中出現Shell run successfully!表明任務運行成功。

步驟五:查看資料同步結果

  1. 登入目標阿里雲ES執行個體的Kibana控制台。

    具體操作步驟請參見登入Kibana控制台

  2. 在左側導覽列,單擊Dev Tools(開發工具)。

  3. Console(控制台)中,執行如下命令,查詢目標端資料量。

    說明

    您可以將目標端資料量與源端資料量進行對比,確認資料是否全部同步成功。

    GET drdstest/_search
    {
      "query": {
        "match_all": {}
      }
    }

    執行成功後,結果如下。查看目標端資料量

  4. 執行如下命令,對指定欄位進行資料檢索。

    GET drdstest/_search
    {
      "query": {
        "term": {
          "Publisher.keyword": {
            "value": "Nintendo"
          }
        }
      }
    }

    執行成功後,返回如下結果。對欄位進行資料檢索