全部產品
Search
文件中心

ApsaraDB for SelectDB:遷移Elasticsearch資料

更新時間:Aug 17, 2024

本文為您介紹如何使用Catalog將Elasticsearch的離線資料移轉到ApsaraDB for SelectDB

前提條件

  • 已將Elasticsearch叢集所有節點IP添加至SelectDB的白名單。具體操作,請參見設定白名單

  • 瞭解什麼是Catalog,以及Catalog的基本操作。更多詳情,請參見湖倉一體

樣本環境

本樣本為將Elasticsearch的索引product_info中的資料移轉到SelectDB 的資料庫es_db中表test_es2SelectDB中。在實際使用中,請根據您的情境修改對應參數。樣本環境如下:

  • 目標庫:es_db

  • 目標表:test_es2SelectDB

  • 來源資料:Elasticsearch的索引product_info

來源資料準備

來源資料內容,您可參見Elasticsearch的快速入門

操作步驟

  1. 串連SelectDB執行個體。具體操作,請參見串連執行個體

  2. 建立Elasticsearch的Catalog。

    說明

    Elasticsearch的Catalog建立成功後,系統會在此Catalog下自動產生一個資料庫default_db,Elasticsearch所有的文檔都會一一映射為此庫的表。

    CREATE CATALOG es_catalog PROPERTIES (
        "type"="es",
        "hosts"="http://127.0.0.1:9200",
        "user"="test_user",
        "password"="test_passwd",
        "nodes_discovery"="false"
    );

    參數說明

    參數

    必選

    預設值

    說明

    es_catalog

    Catalog的名稱。您根據自己需求,替換為自己定義的Catalog的名稱。

    type

    Catalog類型。固定填寫es。

    hosts

    Elasticsearch地址,也可以是Elasticsearch的負載平衡地址。

    格式:http://<IP>:<port>

    user

    Elasticsearch帳號。

    password

    Elasticsearch帳號密碼。

    doc_value_scan

    true

    是否開啟通過Elasticsearch或Lucene列式儲存擷取待查詢欄位的值的功能。

    說明

    此功能,有助於SelectDB自動探測待查詢欄位是否開啟列式儲存,並儘可能從列式儲存中擷取所有欄位的值。在只擷取少數列的情況下,可以大幅提升查詢效能。

    • true:開啟。

    • false:關閉。

    keyword_sniff

    true

    是否對Elasticsearch中字串分詞類型text.fields進行探測,並通過keyword進行匹配。

    • true:按照分詞前的內容整體匹配。

    • false:按照分詞後的內容匹配。

    nodes_discovery

    true

    是否開啟Elasticsearch節點發現。

    • true:SelectDB將從Elasticsearch找到所有可用的相關資料節點並嘗試串連。

    • false:不允許SelectDB訪問Elasticsearch所有可用的相關資料節點,只能通過Elasticsearch地址訪問。

    重要

    Elasticsearch只能通過網域名稱地址訪問,如果您的資料來源是Elasticsearch,此配置必須設為false。

    mapping_es_id

    false

    是否映射Elasticsearch索引中的主鍵_id。若索引的主鍵由Elasticsearch自動處理,則需要設定為true。

    說明

    Elasticsearch在不指定主鍵_id的情況下, 會給每個文檔分配一個全域唯一的主鍵_id

    • true:進列欄位映射,可擷取到該欄位值。

    • false:不進列欄位映射,無法擷取該欄位值。

    like_push_down

    true

    是否將LIKE檢索轉化為萬用字元(wildcard)模糊檢索並下推到Elasticsearch。

    • true:進行轉化。

      說明
      • 會增加Elasticsearch的CPU佔用,並可能在部分情境下降低查詢效能。

      • 適用於不追求精確度只追求召回率的情境。

    • false:不進行轉化。

    include_hidden_index

    false

    是否可以在查詢條件中使用隱藏的索引。

    • false:不可以。

    • true:可以。

  3. 查看Catalog。

    SHOW CATALOGS; --查看CATALOG是否建立成功

    查詢結果如下。

    +--------------+--------------+----------+-----------+-------------------------+---------------------+------------------------+
    | CatalogId    | CatalogName  | Type     | IsCurrent | CreateTime              | LastUpdateTime      | Comment                |
    +--------------+--------------+----------+-----------+-------------------------+---------------------+------------------------+
    | 436009309195 | es_catalog | es      |           | 2024-08-06 17:09:08.058 | 2024-07-19 18:04:37 |                        |
    |            0 | internal     | internal | yes       | UNRECORDED              | NULL                | Doris internal catalog |
    +--------------+--------------+----------+-----------+-------------------------+---------------------+------------------------+
  4. 可選)切換至External Catalog es_catalog目錄下。

    您可以像使用Internal Catalog一樣,對External Catalog es_catalog的資料進行查看和訪問。更多查詢操作,請參見查詢用法

    說明

    目前,雲資料庫 SelectDB 版對External Catalog中的資料只支援讀操作。

    SWITCH es_catalog;
  5. 可選)切換內部的catalog internal目錄下。

    如果您沒有執行第4步,跳過此步驟。

    SWITCH internal;
  6. 可選)建立資料。

    如果您已經建立了目標資料庫,可跳過此步驟。

    CREATE database es_db;
  7. 切換至目標資料庫。

    USE es_db;
  8. 建立表。

    如果您已經有了目標表,根據列類型映射檢查目標列類型需與Elasticsearch來源資料列類型是否一一對應。

    如果您還沒有目標表,建立表時,目標列類型需與Elasticsearch來源資料列類型一一對應。列映射詳情,請參見列類型映射

    CREATE TABLE test_Es2SelectDB
    (
        `annual_rate` varchar(200),
        `describe` text,
        `productName` varchar(200)
    )
    DISTRIBUTED BY HASH(productName) BUCKETS 4
    PROPERTIES("replication_num" = "1");
  9. 遷移資料。

    INSERT INTO test_Es2SelectDB SELECT *  FROM es_catalog.default_db.product_info;
  10. 查看資料匯入情況。

    SELECT *  FROM test_Es2SelectDB;

增量資料同步

實際生產環境中,Elasticsearch資料主要分為離線資料和增量資料。對於增量資料同步,您可參考以下方案:

  • 對於日誌情境,如果僅需最近一段時間的日誌用於資料分析,你可以通過雙寫的方式將日誌分別寫到來源資料Elasticsearch叢集和SelectDB中,直到累積夠要分析的日誌資料。

  • 對於搜尋類情境,您可以結合SelectDB提供的Unique表模型,通過雙寫方式將增量資料分別寫到來源資料Elasticsearch叢集和SelectDB中。對於歷史資料,通過離線資料移轉的方式進行遷移。遷移過程中,如果歷史資料與增量資料重複,由於Unique表模型會保證資料的唯一性,重複的資料會自動按照主鍵進行去重。

ELK生態相容性說明

在日誌採集方面,SelectDB提供定製增強filebeat和logstash外掛程式來高效地收集、處理日誌資料。此外,您也可以通過匯入資料的方式進行日誌採集。具體操作,請參見以下文檔。