public static void createSecondaryIndexIfNotExist()

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);
    }