天天看點

同步RDS資料到 Elasticsearch 中并進行搜尋分析

阿裡雲上擁有豐富的雲存儲、雲資料庫産品。如果您希望針對這些産品中的資料進行分析和搜尋,可以通過DataWorks的資料內建服務,将離線資料同步到Elasticsearch中,最快可達到5分鐘一次。

注意:做資料同步時可能會産生公網流量費用,請您知曉。

準備工作

完成離線資料的分析與搜尋,需要您完成以下幾步操作:

  • 建立一個資料庫,您可以選擇使用阿裡雲的RDS資料庫,也可以在本地伺服器上自建資料庫。本文檔以RDS for MySQL資料庫為例,資料庫字段及資料如下圖所示。
同步RDS資料到 Elasticsearch 中并進行搜尋分析
  • 購買一台可以與VPC内的Elasticsearch互動的ECS,這台ECS将擷取資料源資料并執行寫Elasticsearch資料的任務(該任務将由資料內建系統統一下發)。
  • 開通DataWorks的資料內建服務,并且将ECS作為一個可以執行任務的資源,注冊到資料內建服務中去。
  • 配置一個資料同步的腳本,并且讓其可以周期性的執行起來。
  • 建立一個Elasticsearch執行個體,用來存儲資料內建系統同步成功的資料。

操作步驟

資料同步

  1. 建立專有網絡VPC
  2. 進入 Elasticsearch控制台 ,單擊建立,建立一個Elasticsearch執行個體。
地域、專有網絡、虛拟交換機與您第一步中建立的專有網絡保持一緻。
同步RDS資料到 Elasticsearch 中并進行搜尋分析
  1. 購買一台與Elasticsearch服務處于同一個VPC内的ECS伺服器,并配置設定一個公網IP合或開通彈性IP,為了節省您的成本,您可以複用已有的ECS伺服器。
  • 建議使用 centos6、centos7 或者 aliyunos。
  • 如果您添加的 ECS 需要執行 MaxCompute 任務或者同步任務,需要檢查目前 ECS 的 python 版本是否是 python2.6或2.7 的版本(centos5 的版本為 2.4 ,其餘 os 自帶了 2.6 以上版本)。
  • 請確定 ECS 有公網 IP。
  1. DataWorks 控制台 ,并進入工作區。
    • 如果您已經開通過DataWorks資料內建産品,您将會看到如下頁面:
    同步RDS資料到 Elasticsearch 中并進行搜尋分析
    • 如果您未開通過DataWorks資料內建産品,您将會看到如下頁面。您需要按照步驟開通資料內建服務,此開通動作會産生費用,請您按照費用提示進行預算評估。
    同步RDS資料到 Elasticsearch 中并進行搜尋分析
  2. 單擊DataWorks項目下方的進入資料內建。
  3. 在資料內建頁面,選擇左側導航欄中的資源組,單擊新增資源組。
  4. 根據界面提示,輸入資源組名稱和伺服器資訊。此伺服器為您已經購買的ECS伺服器,伺服器資訊說明如下:
同步RDS資料到 Elasticsearch 中并進行搜尋分析
  • ECS UUID: 登入 ECS 伺服器,執行

    dmidecode | grep UUID

    ,取傳回值。
  • 機器 IP/機器CPU(核)/機器記憶體(GB):您ECS執行個體的公網IP/CPU/記憶體。您可以在ECS控制台上單擊執行個體名稱,在配置資訊子產品,找到相關資訊。
  • 按照界面提示,完成安裝Agent步驟。其中第五步為開通伺服器的8000端口,可以跳過,保持系統預設即可。
  1. 配置資料庫白名單,添加該資源組的IP位址和DataWorks伺服器的IP位址,到您的資料庫白名單中。配置方法請參見 添加白名單
  2. 資源組建立成功後,選擇左側導航欄的資料源,單擊新增資料源。
  3. 單擊MySQL,進入新增MySQL資料源頁面,填入資料源資訊,如下圖所示。
同步RDS資料到 Elasticsearch 中并進行搜尋分析

資料源類型:本文檔以阿裡雲資料庫(RDS)為例,您也可以選擇有公網IP和無公網IP。各配置項的詳細資訊請參見

配置MySQL資料源
  1. 選擇左側導航欄的同步任務,單擊建立,選擇腳本模式。
  2. 在導入模闆對話框中,選擇資料源類型為MySQL,資料源為您第10步中新增的資料源名稱,目标類型為Elasticsearch,完成後單擊确認。
同步RDS資料到 Elasticsearch 中并進行搜尋分析
  1. 配置資料同步腳本。具體配置請參考 配置資料同步腳本模式任務 ,Elasticsearch 的配置規則請參考 配置ElasticSearch Writer
同步RDS資料到 Elasticsearch 中并進行搜尋分析
說明:
  • endpoint為Elasticsearch 的内網或外網位址,如果您使用的是内網位址,請在Elasticsearch的叢集配置頁面,配置Elasticsearch的系統白名單。如果您是用的是外網位址,請在Elasticsearch的網絡配置頁面,配置 Elasticsearch的公網位址通路白名單(包括 DataWorks伺服器的IP位址 和您所使用的資源組的IP位址)。
  • Elasticsearch Writer中accessId和accessKey需要配置您的Elasticsearch的通路使用者名(預設為elastic)和密碼。
  • index為Elasticsearch執行個體的索引,您需要使用該索引名稱通路Elasticsearch的資料。
  1. 同步腳本配置完成後,單擊頁面右側的配置任務資源組,選擇您第7步建立的資源組名稱,完成後單擊運作,将MySQL中的資料同步到Elasticsearch中。

資料搜尋分析

  1. 進入Elasticsearch控制台,單擊右上角的kibana控制台,選擇Dev Tools。
  2. 執行如下指令,檢視已經同步過來的資料。
    POST /testrds/_search?pretty
    {
    "query": { "match_all": {}}
    }           

testrds

為您同步資料時,設定的

index

字段的值。

同步RDS資料到 Elasticsearch 中并進行搜尋分析
  1. 執行如下指令,按照

    trans_num

    字段對文檔進行排序。
    POST /testrds/_search?pretty
    {
     "query": { "match_all": {} },
     "sort": { "trans_num": { "order": "desc" } }
    }           
  2. 執行如下指令,搜尋文檔中的

    category

    brand

    字段。
    POST /testrds/_search?pretty
    {
     "query": { "match_all": {} },
     "_source": ["category", "brand"]
    }           
  3. 執行如下指令,搜尋

    category

    的文檔。
    POST /testrds/_search?pretty
    {
     "query": { "match": {"category":"生"} }
    }           
同步RDS資料到 Elasticsearch 中并進行搜尋分析

更多指令和通路方式,請參考

阿裡雲Elasticsearch官方文檔 Elastic.co官方幫助中心

常見問題

  • 同步過程中出現無法連接配接資料庫的相關錯誤。

解決方法:将您資源組中所使用的ECS伺服器的内網IP和外網IP,都添加到您資料庫的白名單中。

  • 同步過程中無法連通Elasticsearch執行個體的相關錯誤。

解決方法:按照下面步驟進行排查。

  1. 檢查在運作同步腳本之前,是否在頁面右側的配置任務資源組中選擇了您前面步驟建立的資源組。
    • 是,執行下一步。
    • 否,單擊頁面右側的配置任務資源組,選擇您前面步驟建立的資源組。完成後單擊運作。
  2. 檢查是否在Elasticsearch執行個體的白名單中,添加了 和您所使用的資源組的IP位址。
    • 否,将 和您所使用的資源組的IP位址,添加到 Elasticsearch 執行個體的白名單中。
    注意:如果您使用的是内網位址,請在Elasticsearch的叢集配置頁面,配置Elasticsearch的系統白名單。如果您是用的是外網位址,請在Elasticsearch的網絡配置頁面,配置Elasticsearch的公網位址通路白名單(包括
  3. 檢查您的同步腳本配置是否正确。包括endpoint(您 Elasticsearch 執行個體的内網或外網位址)、accessId(Elasticsearch 執行個體的通路使用者名,預設為elastic)和accessKey(Elasticsearch執行個體的通路密碼)。

(本文作者為大資料産品文檔團隊)