1

We have added a sum of 8500 products to the Magento 2 store we are developing, with up to 5100 products in a single parent category.

The expected result would (of course) be that they all show up, granted, when their status is set to enabled.

The actual result is that at least 75% of the products do not show up on the front-end. They are however visible on the backend.

When I select all the products and set the status to disabled and afterwards back to enabled; all the products show up perfectly fine.

But only until a re-indexation is run, then it reverts back to showing only about 25% of the products in the categories at the front-end.

We have tried setting the "Use Flat Catalog Category/Product" to "No", to try and see if that even made a difference at all for the re-indexation issue. Which it didn't.

I have found a similar command to the following, which supposedly could solve the re-indexation problem, I have tried to set the memory limit to higher and lower numbers, to no avail.

php -dmemory_limit=4096M bin/magento indexer:reindex

Magento ver. 2.1.5

  • Im on Magento 2.2.4 and getting this issue - all the products are lost from the frontend and exists in the admin page after reindexing. Can somebody help? is this not fixed in the 2.2.4 version, whats the solution for this problem in Magento 2.2.4. Pls suggest to fix this problem. – Ans Aug 15 '18 at 17:24
7

You can find a fix in Magento 2 GitHub. The issue is present on 2.1.5.

https://github.com/magento/magento2/issues/8018

One of the soulution is to add a preference

<preference for="Magento\Catalog\Model\Indexer\Category\Product\Action\Full" type="<My>\<Module>\Model\Indexer\Category\Product\Action\Full" />

And override the limit of 500 product while reindex.

    <?php
namespace <My>\<Module>\Model\Indexer\Category\Product\Action;

/*
 * Need to override this because ranging is limiting the original indexer to 500 rows per category
 *
 */

class Full extends \Magento\Catalog\Model\Indexer\Category\Product\Action\Full
{
    protected function isRangingNeeded()
    {
        return false;
    }    
}

Hope this help you.

0

A better solution would be to use this composer package. It works with versions 2.1.3 and newer (don't worry about the package name).

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.