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

:MaxCompute データソース

最終更新日:Jun 22, 2026

前提条件

  • MaxCompute (旧称 ODPS) に精通している必要があります。 詳細については、こちらをご参照ください。

  • OpenSearch アカウントには、MaxCompute テーブルに対する必要な権限が必要です。これには、フィールドに対する describeselectdownload、および LABEL 権限が含まれます。

以下のステートメントを使用して権限を付与します:

-- アカウントを追加します。
add user ****@aliyun.com;

-- 必要なテーブル権限をアカウントに付与します。
GRANT describe,select,download ON TABLE table_xxx TO USER ****@aliyun.com;
GRANT describe,select,download ON TABLE table_xxx_done TO USER ****@aliyun.com;

-- MaxCompute でフィールドレベルの権限チェックが有効になっている場合、データ取得時に高いレベルの権限を持つフィールドにアクセスできず、インデックス作成が妨げられることがあります。 このような場合は、アカウントに必要なフィールドレベルの権限を付与する必要があります。
-- プロジェクト全体に権限を付与します。
SET LABEL 3 to USER ****@aliyun.com;

-- 単一のテーブルに権限を付与します。
GRANT LABEL 3 ON TABLE table_xxx(col1, col2) TO ****@aliyun.com;
  • OpenSearch Vector Search Edition は、MaxCompute テーブルの STRING、BOOLEAN、DOUBLE、BIGINT、DATETIME などのフィールドタイプをサポートしています。

説明

テーブル作成ステートメントとパラメーター設定の詳細については、「MaxCompute データソースのテーブル作成ステートメント」をご参照ください。

MaxCompute データソースの設定

  1. OpenSearch コンソールにログインします。 左上隅で、OpenSearch Vector Search Edition に切り替えます。 [インスタンス管理] ページで、対象のインスタンスを見つけ、[操作] 列の [管理] をクリックします。

  1. 左側メニューで、[設定センター] > [データソース設定] を選択します。 [データソースの追加] をクリックします。 データソースタイプとして MaxCompute を選択し、データソース名プロジェクトAccessKey IDAccessKey Secretテーブルパーティションキー自動再インデックス などの情報を入力します。

  1. パラメーターを設定した後、[チェック] をクリックします。 設定が検証されると、[OK] ボタンが有効になります。

  2. データソースを追加した後、インデックススキーマを設定し、インデックステーブルを追加する必要があります。 詳細については、「インデックステーブルの追加」をご参照ください。

  3. インデックステーブルを設定した後、設定を更新し、再インデックスを実行して変更をオンラインクラスターに適用する必要があります。 詳細については、「設定の更新」をご参照ください。

注意:

  • データソース名:データソースの名前です。 名前は InstanceName_CustomName の形式に従う必要があります。

  • プロジェクト、AccessKey ID、AccessKey Secret、テーブル、パーティションキー:MaxCompute データソースへのアクセスに必要なパラメーターです。

  • 自動再インデックス:自動再インデックスを有効にするかどうかを指定します。 有効にすると、データソースの変更が検出されるたびに、このデータソースを参照するインデックステーブルに対してシステムが自動的に再インデックスをトリガーします。

  • 自動再インデックスを有効にする場合は、done テーブルを作成する必要があります。 詳細については、以下の「自動再インデックス」セクションをご参照ください。

自動再インデックス

done テーブルの目的:データソースの自動再インデックスを有効にすると、OpenSearch Vector Search Edition は done テーブルの変更を監視し、自動的に再インデックスをトリガーします。

:MaxCompute テーブルの名前が mytable で、ds=20220113 でパーティション化されているとします。 初回の再インデックス後、全量データを含む新しいパーティションが毎日生成されます。 OpenSearch Vector Search Edition が新しいパーティションをスキャンし、自動的に再インデックスをトリガーして新しいデータを取得するようにする必要があります。 これを実現するには、自動再インデックス機能と done テーブルを使用する必要があります。

手順

  1. データソースを追加する際に、自動再インデックスを有効にします。

  2. MaxCompute で、done テーブルを作成します。 データテーブルの名前が mytable で、そのパーティションキーが ds の場合、done テーブルの名前は mytable_done とし、パーティションキーも ds とする必要があります。 2 つのテーブルは MaxCompute で次のように表示されます:

    odps:sql:xxx> show tables;
    InstanceId: xxx  
    SQL: .                                                                                              
    ALIYUN$****@aliyun.com:mytable          # 全量データを含むテーブル。
    ALIYUN$****@aliyun.com:mytable_done     # 自動全量データインジェストを制御する done テーブル。

    以下に、done テーブルの構造を説明します:

    done テーブルのデータ例:attribute 列の値は {"swift_start_timestamp":1603096083} で、ds パーティションの値は 20180724 です。

    以下のステートメントを使用して done テーブルを作成します:

    create table mytable_done (attribute string) partitioned by (ds string);
  3. mytable テーブルの ds=20220114 パーティションのデータ生成が完了したら、done テーブルを更新して OpenSearch Vector Search Edition での再インデックスをトリガーする必要があります。

    -- パーティションを追加します。
    alter table mytable_done add if not exists partition (ds="20220114");
    
    -- シグナルデータを挿入して、自動全量インジェストをトリガーします。
    insert into table mytable_done partition (ds="20220114") select '{"swift_start_timestamp":1642003200}';

    done テーブルには、次の内容が含まれるようになります:

    odps:sql:xxx> select * from mytable_done where ds=20220114 limit 1;
    InstanceId: xxx  
    SQL: .                                                                                              
    +-----------+----+
    | attribute | ds |
    +-----------+----+
    | {"swift_start_timestamp":1642003200} | 20220114 |
    +-----------+----+

    シグナルデータが done テーブルに挿入されると、OpenSearch Vector Search Edition はこのシグナルを検出し、自動的に再インデックスをトリガーします。

    重要
    • done テーブルには少なくとも 1 つのパーティションキーが必要であり、このキーの名前はデータテーブルのパーティションキーの名前と同一でなければなりません。 たとえば、データテーブルのパーティションキーが ds の場合、done テーブルのパーティションキーも ds でなければなりません。

    • done テーブルには STRING 型のフィールドが 1 つだけ必要であり、フィールド名は attribute でなければなりません。

    • done テーブルに追加するパーティションは、データテーブルに存在している必要があります。 たとえば、データテーブルにパーティション ds="20220114"ds="20220115"ds="20220116" がある場合、done テーブルに追加する新しいパーティションはこれらのいずれかでなければなりません。

    • done テーブルにデータを挿入する際、attribute フィールドの値は {"swift_start_timestamp":1642003200} のような JSON 文字列である必要があります。 このタイムスタンプは、リアルタイム増分更新の開始オフセットを示します。

MaxCompute データソースの変更

  1. [データソース設定] ページで、変更するデータソースの [操作] 列にある [変更] をクリックします。

  2. [データソースの編集] ページでは、プロジェクトAccessKey IDAccessKey Secretテーブルパーティションキー などの情報を変更できます。

    変更後、[チェック] をクリックします。設定が検証された後、OK をクリックして変更を保存します。

  3. データソースを変更した後、設定を更新し、再インデックスを実行して変更をオンラインクラスターに適用する必要があります。 詳細については、「設定の更新」をご参照ください。

    説明

    パーティションの粒度を時間単位、たとえば yyyymmddhh (例: 2022011314) に設定します。 これにより、1 日に複数の全量再インデックスジョブを実行できます。

MaxCompute データソースの削除

  1. [データソース設定] に移動し、[削除] をクリックします。

  2. [削除] をクリックすると、システムが、このデータソースを参照しているインデックステーブルの有無をチェックします。

  • データソースがいずれのインデックステーブルからも参照されていない場合、[OK] をクリックしてデータソースを削除します。 その後、設定を更新し、再インデックスを実行して削除を反映させる必要があります。

  • インデックステーブルがデータソースを参照している場合、エラーメッセージ「Data source is referenced by an index table」が表示されます (エラーコード: DataSourceInUse)。 データソースを削除する前に、インデックステーブルを削除するか、関連付けを解除する必要があります。

データソースを削除する前に、まずそれを参照しているインデックステーブルを削除する必要があります。 「インデックステーブルの削除」をご参照ください。

注意事項

  • データソースの編集中にデータソース名を変更することはできません。

  • MaxCompute は外部テーブルをサポートしていません。 内部テーブルを作成する必要があります。

  • MaxCompute データソースに指定するテーブルは、パーティションテーブルである必要があります。

  • 全量データインジェストには MaxCompute テーブルを使用します。 リアルタイム増分更新には、API ベースのデータソースを使用します。