How to reindex programmatically in Magento2 Unicorn Meta Zoo #1: Why another podcast? Announcing the arrival of Valued Associate #679: Cesar ManaraFix error “There was a problem with reindexing process.” or “Cannot initialize the indexer process.”Products imported with custom script “disappear” from the category listingUnable to reindex prices - deleted all products but error still exists. What tables/values should be clearedMagento2 prevent reindex after adding product programmaticallyArea code not setMagento 2.1 :- Add Conditions Rule in custom formTable missing after index:resetError on editing categories in Magento 2Rogue “enterprise_refresh_index” causing excessive Merchandising failuresM1 cache corruption race condition?

How to count in linear time worst-case?

How to find the right literary agent in the USA?

What was Apollo 13's "Little Jolt" after MECO?

Would reducing the reference voltage of an ADC have any effect on accuracy?

What to do with someone that cheated their way through university and a PhD program?

Is Electric Central Heating worth it if using Solar Panels?

Identify story/novel: Tribe on colonized planet, not aware of this. "Taboo," altitude sickness, robot guardian (60s? Young Adult?)

How would I use different systems of magic when they are capable of the same effects?

Implementing 3DES algorithm in Java: is my code secure?

How to open locks without disable device?

A Paper Record is What I Hamper

Error: Syntax error. Missing ')' for CASE Statement

What is the term for a person whose job is to place products on shelves in stores?

AI positioning circles within an arc at equal distances and heights

Who is Alexandra K. Trenfor? Did she say the quote?

Seek and ye shall find

"My boss was furious with me and I have been fired" vs. "My boss was furious with me and I was fired"

Is this homebrew racial feat, Stonehide, balanced?

As an international instructor, should I openly talk about my accent?

Mistake in years of experience in resume?

What is ls Largest Number Formed by only moving two sticks in 508?

Arriving in Atlanta after US Preclearance in Dublin. Will I go through TSA security in Atlanta to transfer to a connecting flight?

All ASCII characters with a given bit count

What is the ongoing value of the Kanban board to the developers as opposed to management



How to reindex programmatically in Magento2



Unicorn Meta Zoo #1: Why another podcast?
Announcing the arrival of Valued Associate #679: Cesar ManaraFix error “There was a problem with reindexing process.” or “Cannot initialize the indexer process.”Products imported with custom script “disappear” from the category listingUnable to reindex prices - deleted all products but error still exists. What tables/values should be clearedMagento2 prevent reindex after adding product programmaticallyArea code not setMagento 2.1 :- Add Conditions Rule in custom formTable missing after index:resetError on editing categories in Magento 2Rogue “enterprise_refresh_index” causing excessive Merchandising failuresM1 cache corruption race condition?



.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;








1















I want to reindex all indexes in Magento2 from an external file, for this I created a external file as below :



...
$indexers = $objectManager->get('MagentoFrameworkIndexerConfigInterface')->getIndexers();
foreach($indexers as $indexer)

$actualIndexer = $objectManager->get('MagentoFrameworkIndexerIndexerInterface')->load($indexer['indexer_id']);
$actualIndexer->reindexAll();


...


When I run it on then only config index reindexed, not all.



I know it is not a good way to reindex but It is my custom module requirement, I want to integrate reindex code in my module save controller, so that when client save form there will be no indexing issue.



How to reindex all indexes?










share|improve this question




























    1















    I want to reindex all indexes in Magento2 from an external file, for this I created a external file as below :



    ...
    $indexers = $objectManager->get('MagentoFrameworkIndexerConfigInterface')->getIndexers();
    foreach($indexers as $indexer)

    $actualIndexer = $objectManager->get('MagentoFrameworkIndexerIndexerInterface')->load($indexer['indexer_id']);
    $actualIndexer->reindexAll();


    ...


    When I run it on then only config index reindexed, not all.



    I know it is not a good way to reindex but It is my custom module requirement, I want to integrate reindex code in my module save controller, so that when client save form there will be no indexing issue.



    How to reindex all indexes?










    share|improve this question
























      1












      1








      1








      I want to reindex all indexes in Magento2 from an external file, for this I created a external file as below :



      ...
      $indexers = $objectManager->get('MagentoFrameworkIndexerConfigInterface')->getIndexers();
      foreach($indexers as $indexer)

      $actualIndexer = $objectManager->get('MagentoFrameworkIndexerIndexerInterface')->load($indexer['indexer_id']);
      $actualIndexer->reindexAll();


      ...


      When I run it on then only config index reindexed, not all.



      I know it is not a good way to reindex but It is my custom module requirement, I want to integrate reindex code in my module save controller, so that when client save form there will be no indexing issue.



      How to reindex all indexes?










      share|improve this question














      I want to reindex all indexes in Magento2 from an external file, for this I created a external file as below :



      ...
      $indexers = $objectManager->get('MagentoFrameworkIndexerConfigInterface')->getIndexers();
      foreach($indexers as $indexer)

      $actualIndexer = $objectManager->get('MagentoFrameworkIndexerIndexerInterface')->load($indexer['indexer_id']);
      $actualIndexer->reindexAll();


      ...


      When I run it on then only config index reindexed, not all.



      I know it is not a good way to reindex but It is my custom module requirement, I want to integrate reindex code in my module save controller, so that when client save form there will be no indexing issue.



      How to reindex all indexes?







      magento-2.1 reindex






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Sep 14 '17 at 5:25









      Vinaya MaheshwariVinaya Maheshwari

      1,19211948




      1,19211948




















          3 Answers
          3






          active

          oldest

          votes


















          0














          Try below code :



          /**
          * @var MagentoIndexerModelIndexerFactory
          */
          protected $_indexerFactory;
          /**
          * @var MagentoIndexerModelIndexerCollectionFactory
          */
          protected $_indexerCollectionFactory;

          public function __construct(
          MagentoIndexerModelIndexerFactory $indexerFactory,
          MagentoIndexerModelIndexerCollectionFactory $indexerCollectionFactory
          )
          $this->_indexerFactory = $indexerFactory;
          $this->_indexerCollectionFactory = $indexerCollectionFactory;


          // you can call this function to do reindexing
          public function reIndexing(){
          $indexerCollection = $this->_indexerCollectionFactory->create();
          $ids = $indexerCollection->getAllIds();
          foreach ($ids as $id)
          $idx = $this->_indexerFactory->create()->load($id);
          $idx->reindexAll($id);
          //$idx->reindexRow($id);






          share|improve this answer






























            0














            Take a look at MagentoIndexerConsoleCommandIndexerReindexCommand::execute() on how the console command does it. If you analyze the code you can up with something like:



            /**
            * @var MagentoIndexerModelIndexerCollectionFactory
            */
            protected $indexerCollectionFactory;

            /**
            * Foo constructor.
            * @param MagentoIndexerModelIndexerCollectionFactory $collectionFactory
            */
            public function __construct(
            MagentoIndexerModelIndexerCollectionFactory $indexerCollectionFactory
            )
            $this->indexerCollectionFactory = $indexerCollectionFactory;


            /**
            * Run every indexer
            */
            public function runEveryIndexer()

            $indexerCollection = $this->indexerCollectionFactory->create();
            foreach ($indexerCollection->getItems() as $indexer)
            $indexer->reindexAll();




            A small sidenote: I don't know your use case, but it might make more sense to only reindex the required indexers, because some indexers might take a long time to run and are not always required to.






            share|improve this answer






























              0














              Simply call this function wherever you need to reindex. If you make it static, you can include and call it from anywhere you want, because it is class-independent.



              use MagentoIndexerConsoleCommandIndexerReindexCommand;
              public function reIndexing()

              $obj = MagentoFrameworkAppObjectManager::getInstance();
              $indexerCollectionFactory = $obj->get("MagentoIndexerModelIndexerCollectionFactory");
              $indexerFactory = $obj->get("MagentoIndexerModelIndexerFactory");
              $indexerCollection = $indexerCollectionFactory->create();
              $allIds = $indexerCollection->getAllIds();

              foreach ($allIds as $id)

              $indexer = $indexerFactory->create()->load($id);
              $indexer->reindexAll(); // this reindexes all







              share|improve this answer























                Your Answer








                StackExchange.ready(function()
                var channelOptions =
                tags: "".split(" "),
                id: "479"
                ;
                initTagRenderer("".split(" "), "".split(" "), channelOptions);

                StackExchange.using("externalEditor", function()
                // Have to fire editor after snippets, if snippets enabled
                if (StackExchange.settings.snippets.snippetsEnabled)
                StackExchange.using("snippets", function()
                createEditor();
                );

                else
                createEditor();

                );

                function createEditor()
                StackExchange.prepareEditor(
                heartbeatType: 'answer',
                autoActivateHeartbeat: false,
                convertImagesToLinks: false,
                noModals: true,
                showLowRepImageUploadWarning: true,
                reputationToPostImages: null,
                bindNavPrevention: true,
                postfix: "",
                imageUploader:
                brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
                contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
                allowUrls: true
                ,
                onDemand: true,
                discardSelector: ".discard-answer"
                ,immediatelyShowMarkdownHelp:true
                );



                );













                draft saved

                draft discarded


















                StackExchange.ready(
                function ()
                StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmagento.stackexchange.com%2fquestions%2f193159%2fhow-to-reindex-programmatically-in-magento2%23new-answer', 'question_page');

                );

                Post as a guest















                Required, but never shown

























                3 Answers
                3






                active

                oldest

                votes








                3 Answers
                3






                active

                oldest

                votes









                active

                oldest

                votes






                active

                oldest

                votes









                0














                Try below code :



                /**
                * @var MagentoIndexerModelIndexerFactory
                */
                protected $_indexerFactory;
                /**
                * @var MagentoIndexerModelIndexerCollectionFactory
                */
                protected $_indexerCollectionFactory;

                public function __construct(
                MagentoIndexerModelIndexerFactory $indexerFactory,
                MagentoIndexerModelIndexerCollectionFactory $indexerCollectionFactory
                )
                $this->_indexerFactory = $indexerFactory;
                $this->_indexerCollectionFactory = $indexerCollectionFactory;


                // you can call this function to do reindexing
                public function reIndexing(){
                $indexerCollection = $this->_indexerCollectionFactory->create();
                $ids = $indexerCollection->getAllIds();
                foreach ($ids as $id)
                $idx = $this->_indexerFactory->create()->load($id);
                $idx->reindexAll($id);
                //$idx->reindexRow($id);






                share|improve this answer



























                  0














                  Try below code :



                  /**
                  * @var MagentoIndexerModelIndexerFactory
                  */
                  protected $_indexerFactory;
                  /**
                  * @var MagentoIndexerModelIndexerCollectionFactory
                  */
                  protected $_indexerCollectionFactory;

                  public function __construct(
                  MagentoIndexerModelIndexerFactory $indexerFactory,
                  MagentoIndexerModelIndexerCollectionFactory $indexerCollectionFactory
                  )
                  $this->_indexerFactory = $indexerFactory;
                  $this->_indexerCollectionFactory = $indexerCollectionFactory;


                  // you can call this function to do reindexing
                  public function reIndexing(){
                  $indexerCollection = $this->_indexerCollectionFactory->create();
                  $ids = $indexerCollection->getAllIds();
                  foreach ($ids as $id)
                  $idx = $this->_indexerFactory->create()->load($id);
                  $idx->reindexAll($id);
                  //$idx->reindexRow($id);






                  share|improve this answer

























                    0












                    0








                    0







                    Try below code :



                    /**
                    * @var MagentoIndexerModelIndexerFactory
                    */
                    protected $_indexerFactory;
                    /**
                    * @var MagentoIndexerModelIndexerCollectionFactory
                    */
                    protected $_indexerCollectionFactory;

                    public function __construct(
                    MagentoIndexerModelIndexerFactory $indexerFactory,
                    MagentoIndexerModelIndexerCollectionFactory $indexerCollectionFactory
                    )
                    $this->_indexerFactory = $indexerFactory;
                    $this->_indexerCollectionFactory = $indexerCollectionFactory;


                    // you can call this function to do reindexing
                    public function reIndexing(){
                    $indexerCollection = $this->_indexerCollectionFactory->create();
                    $ids = $indexerCollection->getAllIds();
                    foreach ($ids as $id)
                    $idx = $this->_indexerFactory->create()->load($id);
                    $idx->reindexAll($id);
                    //$idx->reindexRow($id);






                    share|improve this answer













                    Try below code :



                    /**
                    * @var MagentoIndexerModelIndexerFactory
                    */
                    protected $_indexerFactory;
                    /**
                    * @var MagentoIndexerModelIndexerCollectionFactory
                    */
                    protected $_indexerCollectionFactory;

                    public function __construct(
                    MagentoIndexerModelIndexerFactory $indexerFactory,
                    MagentoIndexerModelIndexerCollectionFactory $indexerCollectionFactory
                    )
                    $this->_indexerFactory = $indexerFactory;
                    $this->_indexerCollectionFactory = $indexerCollectionFactory;


                    // you can call this function to do reindexing
                    public function reIndexing(){
                    $indexerCollection = $this->_indexerCollectionFactory->create();
                    $ids = $indexerCollection->getAllIds();
                    foreach ($ids as $id)
                    $idx = $this->_indexerFactory->create()->load($id);
                    $idx->reindexAll($id);
                    //$idx->reindexRow($id);







                    share|improve this answer












                    share|improve this answer



                    share|improve this answer










                    answered Sep 14 '17 at 6:13









                    Manthan DaveManthan Dave

                    8,02621539




                    8,02621539























                        0














                        Take a look at MagentoIndexerConsoleCommandIndexerReindexCommand::execute() on how the console command does it. If you analyze the code you can up with something like:



                        /**
                        * @var MagentoIndexerModelIndexerCollectionFactory
                        */
                        protected $indexerCollectionFactory;

                        /**
                        * Foo constructor.
                        * @param MagentoIndexerModelIndexerCollectionFactory $collectionFactory
                        */
                        public function __construct(
                        MagentoIndexerModelIndexerCollectionFactory $indexerCollectionFactory
                        )
                        $this->indexerCollectionFactory = $indexerCollectionFactory;


                        /**
                        * Run every indexer
                        */
                        public function runEveryIndexer()

                        $indexerCollection = $this->indexerCollectionFactory->create();
                        foreach ($indexerCollection->getItems() as $indexer)
                        $indexer->reindexAll();




                        A small sidenote: I don't know your use case, but it might make more sense to only reindex the required indexers, because some indexers might take a long time to run and are not always required to.






                        share|improve this answer



























                          0














                          Take a look at MagentoIndexerConsoleCommandIndexerReindexCommand::execute() on how the console command does it. If you analyze the code you can up with something like:



                          /**
                          * @var MagentoIndexerModelIndexerCollectionFactory
                          */
                          protected $indexerCollectionFactory;

                          /**
                          * Foo constructor.
                          * @param MagentoIndexerModelIndexerCollectionFactory $collectionFactory
                          */
                          public function __construct(
                          MagentoIndexerModelIndexerCollectionFactory $indexerCollectionFactory
                          )
                          $this->indexerCollectionFactory = $indexerCollectionFactory;


                          /**
                          * Run every indexer
                          */
                          public function runEveryIndexer()

                          $indexerCollection = $this->indexerCollectionFactory->create();
                          foreach ($indexerCollection->getItems() as $indexer)
                          $indexer->reindexAll();




                          A small sidenote: I don't know your use case, but it might make more sense to only reindex the required indexers, because some indexers might take a long time to run and are not always required to.






                          share|improve this answer

























                            0












                            0








                            0







                            Take a look at MagentoIndexerConsoleCommandIndexerReindexCommand::execute() on how the console command does it. If you analyze the code you can up with something like:



                            /**
                            * @var MagentoIndexerModelIndexerCollectionFactory
                            */
                            protected $indexerCollectionFactory;

                            /**
                            * Foo constructor.
                            * @param MagentoIndexerModelIndexerCollectionFactory $collectionFactory
                            */
                            public function __construct(
                            MagentoIndexerModelIndexerCollectionFactory $indexerCollectionFactory
                            )
                            $this->indexerCollectionFactory = $indexerCollectionFactory;


                            /**
                            * Run every indexer
                            */
                            public function runEveryIndexer()

                            $indexerCollection = $this->indexerCollectionFactory->create();
                            foreach ($indexerCollection->getItems() as $indexer)
                            $indexer->reindexAll();




                            A small sidenote: I don't know your use case, but it might make more sense to only reindex the required indexers, because some indexers might take a long time to run and are not always required to.






                            share|improve this answer













                            Take a look at MagentoIndexerConsoleCommandIndexerReindexCommand::execute() on how the console command does it. If you analyze the code you can up with something like:



                            /**
                            * @var MagentoIndexerModelIndexerCollectionFactory
                            */
                            protected $indexerCollectionFactory;

                            /**
                            * Foo constructor.
                            * @param MagentoIndexerModelIndexerCollectionFactory $collectionFactory
                            */
                            public function __construct(
                            MagentoIndexerModelIndexerCollectionFactory $indexerCollectionFactory
                            )
                            $this->indexerCollectionFactory = $indexerCollectionFactory;


                            /**
                            * Run every indexer
                            */
                            public function runEveryIndexer()

                            $indexerCollection = $this->indexerCollectionFactory->create();
                            foreach ($indexerCollection->getItems() as $indexer)
                            $indexer->reindexAll();




                            A small sidenote: I don't know your use case, but it might make more sense to only reindex the required indexers, because some indexers might take a long time to run and are not always required to.







                            share|improve this answer












                            share|improve this answer



                            share|improve this answer










                            answered Sep 14 '17 at 6:23









                            Giel BerkersGiel Berkers

                            7,20424383




                            7,20424383





















                                0














                                Simply call this function wherever you need to reindex. If you make it static, you can include and call it from anywhere you want, because it is class-independent.



                                use MagentoIndexerConsoleCommandIndexerReindexCommand;
                                public function reIndexing()

                                $obj = MagentoFrameworkAppObjectManager::getInstance();
                                $indexerCollectionFactory = $obj->get("MagentoIndexerModelIndexerCollectionFactory");
                                $indexerFactory = $obj->get("MagentoIndexerModelIndexerFactory");
                                $indexerCollection = $indexerCollectionFactory->create();
                                $allIds = $indexerCollection->getAllIds();

                                foreach ($allIds as $id)

                                $indexer = $indexerFactory->create()->load($id);
                                $indexer->reindexAll(); // this reindexes all







                                share|improve this answer



























                                  0














                                  Simply call this function wherever you need to reindex. If you make it static, you can include and call it from anywhere you want, because it is class-independent.



                                  use MagentoIndexerConsoleCommandIndexerReindexCommand;
                                  public function reIndexing()

                                  $obj = MagentoFrameworkAppObjectManager::getInstance();
                                  $indexerCollectionFactory = $obj->get("MagentoIndexerModelIndexerCollectionFactory");
                                  $indexerFactory = $obj->get("MagentoIndexerModelIndexerFactory");
                                  $indexerCollection = $indexerCollectionFactory->create();
                                  $allIds = $indexerCollection->getAllIds();

                                  foreach ($allIds as $id)

                                  $indexer = $indexerFactory->create()->load($id);
                                  $indexer->reindexAll(); // this reindexes all







                                  share|improve this answer

























                                    0












                                    0








                                    0







                                    Simply call this function wherever you need to reindex. If you make it static, you can include and call it from anywhere you want, because it is class-independent.



                                    use MagentoIndexerConsoleCommandIndexerReindexCommand;
                                    public function reIndexing()

                                    $obj = MagentoFrameworkAppObjectManager::getInstance();
                                    $indexerCollectionFactory = $obj->get("MagentoIndexerModelIndexerCollectionFactory");
                                    $indexerFactory = $obj->get("MagentoIndexerModelIndexerFactory");
                                    $indexerCollection = $indexerCollectionFactory->create();
                                    $allIds = $indexerCollection->getAllIds();

                                    foreach ($allIds as $id)

                                    $indexer = $indexerFactory->create()->load($id);
                                    $indexer->reindexAll(); // this reindexes all







                                    share|improve this answer













                                    Simply call this function wherever you need to reindex. If you make it static, you can include and call it from anywhere you want, because it is class-independent.



                                    use MagentoIndexerConsoleCommandIndexerReindexCommand;
                                    public function reIndexing()

                                    $obj = MagentoFrameworkAppObjectManager::getInstance();
                                    $indexerCollectionFactory = $obj->get("MagentoIndexerModelIndexerCollectionFactory");
                                    $indexerFactory = $obj->get("MagentoIndexerModelIndexerFactory");
                                    $indexerCollection = $indexerCollectionFactory->create();
                                    $allIds = $indexerCollection->getAllIds();

                                    foreach ($allIds as $id)

                                    $indexer = $indexerFactory->create()->load($id);
                                    $indexer->reindexAll(); // this reindexes all








                                    share|improve this answer












                                    share|improve this answer



                                    share|improve this answer










                                    answered Jul 25 '18 at 10:46









                                    ErunestaronErunestaron

                                    11




                                    11



























                                        draft saved

                                        draft discarded
















































                                        Thanks for contributing an answer to Magento Stack Exchange!


                                        • Please be sure to answer the question. Provide details and share your research!

                                        But avoid


                                        • Asking for help, clarification, or responding to other answers.

                                        • Making statements based on opinion; back them up with references or personal experience.

                                        To learn more, see our tips on writing great answers.




                                        draft saved


                                        draft discarded














                                        StackExchange.ready(
                                        function ()
                                        StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmagento.stackexchange.com%2fquestions%2f193159%2fhow-to-reindex-programmatically-in-magento2%23new-answer', 'question_page');

                                        );

                                        Post as a guest















                                        Required, but never shown





















































                                        Required, but never shown














                                        Required, but never shown












                                        Required, but never shown







                                        Required, but never shown

































                                        Required, but never shown














                                        Required, but never shown












                                        Required, but never shown







                                        Required, but never shown







                                        Popular posts from this blog

                                        Bulk add to cart function issuecart vs. mini cart issue … rwd themeRedirect Add to cart button to cart pageAdd to cart issue - Magento 2.1The requested Payment Method is not available When creating an orderM2: reason add-to-cart might not function in production modeAdd to cart issue in some android devicesMagento 2 - custom price can not add to subtotal and grand total after add to cartAdd to cart codeIssue with my cart module on pdp and cart pages, just keeps spinningBulk price and quantity update using rest api

                                        БиармияSxpst500bh2ntaf! 3h2r