本文為您介紹如何使用Catalog將Elasticsearch的離線資料移轉到ApsaraDB for SelectDB。
前提條件
樣本環境
本樣本為將Elasticsearch的索引product_info中的資料移轉到SelectDB 的資料庫es_db中表test_es2SelectDB中。在實際使用中,請根據您的情境修改對應參數。樣本環境如下:
目標庫:es_db
目標表:test_es2SelectDB
來源資料:Elasticsearch的索引product_info
來源資料準備
來源資料內容,您可參見Elasticsearch的快速入門。
操作步驟
串連SelectDB執行個體。具體操作,請參見串連執行個體。
建立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:可以。
查看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 | +--------------+--------------+----------+-----------+-------------------------+---------------------+------------------------+
(可選)切換至External Catalog es_catalog目錄下。
您可以像使用Internal Catalog一樣,對External Catalog es_catalog的資料進行查看和訪問。更多查詢操作,請參見查詢用法。
說明目前,雲資料庫 SelectDB 版對External Catalog中的資料只支援讀操作。
SWITCH es_catalog;
(可選)切換內部的catalog internal目錄下。
如果您沒有執行第4步,跳過此步驟。
SWITCH internal;
(可選)建立資料。
如果您已經建立了目標資料庫,可跳過此步驟。
CREATE database es_db;
切換至目標資料庫。
USE es_db;
建立表。
如果您已經有了目標表,根據列類型映射檢查目標列類型需與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");
遷移資料。
INSERT INTO test_Es2SelectDB SELECT * FROM es_catalog.default_db.product_info;
查看資料匯入情況。
SELECT * FROM test_Es2SelectDB;
增量資料同步
實際生產環境中,Elasticsearch資料主要分為離線資料和增量資料。對於增量資料同步,您可參考以下方案:
對於日誌情境,如果僅需最近一段時間的日誌用於資料分析,你可以通過雙寫的方式將日誌分別寫到來源資料Elasticsearch叢集和SelectDB中,直到累積夠要分析的日誌資料。
對於搜尋類情境,您可以結合SelectDB提供的Unique表模型,通過雙寫方式將增量資料分別寫到來源資料Elasticsearch叢集和SelectDB中。對於歷史資料,通過離線資料移轉的方式進行遷移。遷移過程中,如果歷史資料與增量資料重複,由於Unique表模型會保證資料的唯一性,重複的資料會自動按照主鍵進行去重。
ELK生態相容性說明
在日誌採集方面,SelectDB提供定製增強filebeat和logstash外掛程式來高效地收集、處理日誌資料。此外,您也可以通過匯入資料的方式進行日誌採集。具體操作,請參見以下文檔。