class SearchProductManager {

    public Integer rebuild() {
        // TODO 芋艿，因为目前商品比较少，所以写的很粗暴。等未来重构
        Integer lastId = null;
        int rebuildCounts = 0;
        while (true) {
            // 从商品服务，增量获取商品列表编号
            CommonResult<List<Integer>> listProductSpuIdsResult = productSpuRpc.listProductSpuIds(lastId, REBUILD_FETCH_PER_SIZE);
            listProductSpuIdsResult.checkError();
            List<Integer> spuIds = listProductSpuIdsResult.getData();
            // 逐个重建索引到 ES 中
            spuIds.forEach(this::saveProduct);
            // 设置新的 lastId ，或者结束
            rebuildCounts += listProductSpuIdsResult.getData().size();
            if (spuIds.size() < REBUILD_FETCH_PER_SIZE) {
                break;
            } else {
                lastId = spuIds.get(spuIds.size() - 1);
            }
        }
        // 返回成功
        return rebuildCounts;
    }

}