全部產品
Search
文件中心

Tablestore:動態修改 Schema

更新時間:Jul 25, 2026

Java SDK 可基於源多元索引建立灰階索引,在不中斷讀寫的情況下增刪索引欄位,或修改欄位類型、路由欄位和預排序配置。

前提條件

安裝Tablestore Java SDK並初始化用戶端。

功能說明

調用 createSearchIndex 方法,基於源索引建立包含完整新 Schema 的灰階索引。動態修改 Schema 的過程不會中斷資料表讀寫,使用源索引名稱的查詢代碼也無需修改。完整流程如下:

public CreateSearchIndexResponse createSearchIndex(CreateSearchIndexRequest request)
  1. 基於源索引建立灰階索引,並提交完整的新 Schema。

  2. 等待源索引的存量和增量資料同步到灰階索引,直至灰階索引的同步進度追平源索引。

  3. 按需配置源索引和灰階索引的查詢流量權重,進行 A/B 測試。

  4. 確認查詢結果符合預期後交換索引,使源索引名稱指向新 Schema。

  5. 交換後觀察一段時間,確認索引運行正常,再刪除指向舊 Schema 的灰階索引。

重要
  • 灰階索引是動態修改 Schema 流程使用的臨時索引,名稱必須以 _reindex 結尾。流程中索引指向和流量權重會發生變化,請勿直接使用灰階索引名稱查詢資料。

  • 同一時間最多重建 5 個索引。開始下一批前,請等待當前批次的灰階索引追平源索引,或完成索引切換。

建立灰階索引

以下樣本將 col1 從 Long 改為 Keyword,刪除 col2,新增 Long 欄位 col3,並將 id 設定為路由欄位。

String tableName = "example_table";
String sourceIndexName = "example_index";
String reindexName = "example_index_reindex";
IndexSchema indexSchema = new IndexSchema();
indexSchema.setFieldSchemas(Arrays.asList(
        new FieldSchema("id", FieldType.KEYWORD),
        new FieldSchema("col1", FieldType.KEYWORD),
        new FieldSchema("col3", FieldType.LONG)));

IndexSetting indexSetting = new IndexSetting();
indexSetting.setRoutingFields(Arrays.asList("id"));
indexSchema.setIndexSetting(indexSetting);

CreateSearchIndexRequest request = new CreateSearchIndexRequest();
request.setTableName(tableName);
request.setIndexName(reindexName);
request.setSourceIndexName(sourceIndexName);
request.setIndexSchema(indexSchema);
client.createSearchIndex(request);

請求成功後,查詢灰階索引資訊,確認索引狀態為 RUNNING、brotherIndexName 為源索引名稱,並核對新 Schema。RUNNING 僅表示灰階索引已建立,不表示其資料同步進度已追平源索引。

驗證並切換索引

重要

控制台顯示灰階索引可安全切換後,再進行 A/B 測試和索引交換。交換後,源索引名稱指向新 Schema,灰階索引名稱指向舊 Schema;確認索引運行正常並觀察一段時間後,再刪除灰階索引。

在Tablestore console中查看同步進度、配置流量權重、交換索引和刪除灰階索引。具體操作請參見動態修改多元索引 Schema。

參數說明

CreateSearchIndexRequest 包含以下參數:

名稱

類型

說明

tableName(必選)

String

資料表名稱。

indexName(必選)

String

灰階索引名稱,必須以 _reindex 結尾。

indexSchema(必選)

IndexSchema

灰階索引的完整新 Schema。

sourceIndexName(必選)

String

重建所基於的源索引名稱。Tablestore 根據該索引建立灰階索引,並將資料表的存量和增量資料同步到灰階索引。

timeToLive(可選)

Integer

灰階索引的資料生命週期,單位為秒。可以通過 setTimeToLiveInDays 按天設定。取值和約束請參見生命週期管理。

索引結構

indexSchema 的類型為 IndexSchema,包含以下參數。

名稱

類型

說明

fieldSchemas(必選)

List<FieldSchema>

變更後的完整欄位列表。通過增加、刪除或修改列表中的欄位來調整索引欄位。

indexSetting(可選)

IndexSetting

索引設定。通過 routingFields 修改路由欄位。

indexSort(可選)

Sort

索引預排序配置。

索引欄位、索引設定和預排序配置的完整參數結構及約束,請參見建立多元索引。