in java/core/src/main/java/com/aliyun/openservices/tablestore/agent/util/TablestoreHelper.java [181:210]
public static void createSecondaryIndexIfNotExist(
SyncClient client,
String tableName,
String secondaryIndexName,
List<String> primaryKeyNames,
List<String> definedColumnNames,
IndexType indexType
) {
DescribeTableResponse describeTableResponse = client.describeTable(new DescribeTableRequest(tableName));
List<IndexMeta> indexMetas = describeTableResponse.getIndexMeta();
for (IndexMeta indexMeta : indexMetas) {
if (indexMeta.getIndexName().equals(secondaryIndexName)) {
log.warn("tablestore secondary index:[{}] already exists", secondaryIndexName);
return;
}
}
boolean includeBaseData = false;
IndexMeta indexMeta = new IndexMeta(secondaryIndexName);
indexMeta.setIndexUpdateMode(IndexType.IT_GLOBAL_INDEX.equals(indexType) ? IndexUpdateMode.IUM_ASYNC_INDEX : IndexUpdateMode.IUM_SYNC_INDEX);
indexMeta.setIndexType(indexType);
for (String primaryKeyName : primaryKeyNames) {
indexMeta.addPrimaryKeyColumn(primaryKeyName);
}
for (String columnName : definedColumnNames) {
indexMeta.addDefinedColumn(columnName);
}
CreateIndexRequest createIndexRequest = new CreateIndexRequest(tableName, indexMeta, includeBaseData);
client.createIndex(createIndexRequest);
log.info("tablestore create secondary index:[{}] successfully.", secondaryIndexName);
}