We use Magento as our eCommerce platform and a single product is assigned to various categories and has their own different URL's + a single product URL.

For every single product, more than 1 URL is made. It is something like this.

domain.com/main-category1/sub-category/product
domain.com/main-category2/sub-category/product
domain.com/bestseller/product
domain.com/product

This led to duplicate content issues. We had canonical tags implemented to avoid duplicate content issues and all of the above URL's pointed to domain.com/product. So it was decided we keep domain.com/product as the main version to be indexed in the search engines to avoid duplicate content issues.

Now comes the main question. We already use domain.com/main-category1/sub-category/product in the site structure and some of these URL's are already indexed by search engines. Canonical tags are implemented on them and it will take some time for google to understand that and index domain.com/product instead of others. Do we keep category paths in the site structure or shift to direct product path. We will not delete URL's with category path as some of them are already indexed.

What is the best option here? To keep the old URL's with category path in the site structure or shift to the new ones? If we keep category URL's, will it confuse crawlers as the category URL's point to domain.com/product with canonical tag and site structure has URL's with category?