すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB for SelectDB:Elasticsearch データの移行

最終更新日:Mar 29, 2026

カタログを使用して、Elasticsearch クラスターから ApsaraDB for SelectDB インスタンスへオフラインデータを移行します。このカタログにより、Elasticsearch のインデックスが SelectDB のテーブルにマップされるため、単一の INSERT INTO ... SELECT 文を実行するだけで移行を完了できます。

前提条件

開始する前に、以下の条件を満たしていることを確認してください。

  • Elasticsearch クラスターと SelectDB インスタンス間のネットワーク接続性。Elasticsearch クラスターのすべてのノードは、SelectDB インスタンスと同じ仮想プライベートクラウド (VPC) 内に配置されている必要があります。ノードが異なる VPC に配置されている場合は、事前にクロス VPC 接続を設定してください。詳細については、「ApsaraDB for SelectDB インスタンスとデータソース間の接続確立に失敗した場合の対処方法」をご参照ください。

  • Elasticsearch クラスターのすべてのノードの IP アドレスを、SelectDB インスタンスの IP アドレスホワイトリストに追加済みであること。詳細については、「IP アドレスホワイトリストの設定」をご参照ください。

  • Elasticsearch クラスターのホワイトリストに追加された SelectDB インスタンスの VPC IP アドレス(クラスターがホワイトリスト機能をサポートしている場合)。VPC IP アドレスを取得するには、「ApsaraDB SelectDB インスタンスが属する VPC の IP アドレスを表示する方法」をご参照ください。パブリック IP アドレスを取得するには、SelectDB インスタンスのパブリックエンドポイントに対して ping コマンドを実行します。

  • SelectDB のカタログに関する基本的な知識があること。背景情報については、「データレイクハウス」をご参照ください。

仕組み

カタログを作成すると、SelectDB から Elasticsearch クラスターへの読み取り専用接続が確立されます。カタログ作成後、SelectDB は自動的にその内部に default_db という名前のデータベースを作成し、各 Elasticsearch インデックスをそのデータベース内のテーブルにマップします。その後、カタログをクエリし、INSERT INTO ... SELECT を実行して、データを SelectDB のテーブルにコピーできます。

説明

SelectDB は外部カタログからのデータ読み取りのみをサポートしており、Elasticsearch クラスターへの書き込みはサポートされていません。

サンプル環境

以下の手順では、次の例の値を使用します。必要に応じて、ご自身の値に置き換えてください。

項目
Elasticsearch インデックス(ソース)product_info
SelectDB データベース(送信先)es_db
SelectDB テーブル(送信先)test_es2SelectDB

サンプルソースデータの準備

詳細については、「入門」をご参照ください。

オフラインデータの移行

ステップ 1:SelectDB インスタンスへの接続

接続方法については、「インスタンスへの接続」をご参照ください。

ステップ 2:Elasticsearch カタログの作成

以下の文を実行して、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はいカタログの名前です。ビジネス要件に応じて名前を変更してください。
typeはいes を指定します。
hostsはいElasticsearch クラスターへのアクセス URL です。形式: http://<IP アドレス>:<ポート>。Server Load Balancer (SLB) エンドポイントを利用する場合は、SLB の URL を指定します。
userいいえElasticsearch クラスターへのアクセスに使用するユーザー名です。
passwordいいえElasticsearch クラスターへのアクセスに使用するパスワードです。
doc_value_scanいいえtrueフィールド値のクエリに列指向ストレージ(doc_values)を有効化します。有効化すると、SelectDB は doc_values が有効なフィールドを自動的にクエリし、少数のカラムに対するクエリ性能を大幅に向上させます。
keyword_sniffいいえtrueElasticsearch の TEXT フィールドを検出し、対応する KEYWORD フィールドを用いてクエリします。true の場合、SelectDB はトークン化前の完全なフィールド値を一致させます。false の場合、SelectDB はトークン化後の個々の語(term)を一致させます。
nodes_discoveryいいえtrueElasticsearch ノードの自動検出を有効化します。true の場合、SelectDB は利用可能なすべてのデータノードを検出し接続します。false の場合、SelectDB は hosts で指定された URL を通じてのみノードにアクセスします。Alibaba Cloud Elasticsearch クラスターの場合、URL 経由でのみアクセス可能であるため、必ず false に設定してください
mapping_es_idいいえfalseElasticsearch の _id フィールドを SelectDB のカラムにマップします。プライマリキー値をクエリする必要がある場合は true に設定します。false の場合、クエリで _id フィールドにアクセスできません。
like_push_downいいえtrueLIKE クエリを Elasticsearch のワイルドカードクエリに変換し、クラスター側へプッシュダウンします。この機能により、特定のシナリオで Elasticsearch クラスターの CPU 使用率が上昇する可能性があります。false に設定すると LIKE プッシュダウンが無効化され、再現率(recall rate)を犠牲にして精度が向上します。
include_hidden_indexいいえfalseクエリ条件に非表示インデックスを含めます。

ステップ 3:カタログの確認

SHOW CATALOGS を実行し、カタログが正しく作成されたことを確認します。

SHOW CATALOGS;

期待される出力:

+--------------+--------------+----------+-----------+-------------------------+---------------------+------------------------+
| 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:(任意)Elasticsearch カタログのクエリ

マップされたテーブルを参照するために、外部カタログに切り替えます。

SWITCH es_catalog;

es_catalog 内のデータは、内部カタログと同様の方法でクエリおよびアクセスできます。クエリの例については、「Elasticsearch データソース」トピックの「Elasticsearch データソースからのデータのクエリ」セクションをご参照ください。

作業終了後は、内部カタログに戻ります。

SWITCH internal;

ステップ 5:送信先データベースの作成

データベースが既に存在する場合は、このステップをスキップしてください。

CREATE DATABASE es_db;

送信先データベースに切り替えます。

USE es_db;

ステップ 6:送信先テーブルの作成

テーブルを作成する前に、Elasticsearch と SelectDB 間のカラム型マッピングを確認してください。完全な型マッピングのリファレンスについては、「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");

ステップ 7:データの移行

INSERT INTO ... SELECT を実行し、Elasticsearch インデックスから SelectDB テーブルへ全レコードをコピーします。

INSERT INTO test_Es2SelectDB SELECT * FROM es_catalog.default_db.product_info;

ステップ 8:移行の確認

送信先テーブルをクエリし、データが正しくインポートされたことを確認します。

SELECT * FROM test_Es2SelectDB;

増分データの移行

本番環境では、Elasticsearch のデータは通常、既存データ(オフラインデータ)と継続的な増分データの両方を含みます。データの種類に応じて、以下の戦略をご利用ください。

ログデータ

新しいログエントリを、Elasticsearch クラスターと SelectDB インスタンスの両方に同時に書き込みます。SelectDB に十分なデータが蓄積されたら、分析クエリを直接 SelectDB に対して実行します。

トランザクションまたはイベントデータ

SelectDB の Unique key モデルを用いることで、重複排除を自動的に処理できます。増分データを、Elasticsearch クラスターと SelectDB の両方に並列で書き込みます。既存データは、前述のオフライン移行手順で移行します。既存データと増分データのレコードが重複する場合、Unique key モデルはプライマリキーに基づいて重複排除を行うため、手動による競合解決は不要です。

ELK エコシステム互換性

ログ収集において、SelectDB は、ログデータの効率的な収集および処理を実現するためのカスタマイズ・強化版 Filebeat および Logstash プラグインを提供しています。また、データのインポートによるログ収集も可能です。詳細については、以下のトピックをご参照ください。

次のステップ