How to reindex programmatically in Magento2 Planned maintenance scheduled April 23, 2019 at...

Do wooden building fires get hotter than 600°C?

What does it mean that physics no longer uses mechanical models to describe phenomena?

How were pictures turned from film to a big picture in a picture frame before digital scanning?

Antipodal Land Area Calculation

Did Mueller's report provide an evidentiary basis for the claim of Russian govt election interference via social media?

What does Turing mean by this statement?

How to report t statistic from R

Draw 4 of the same figure in the same tikzpicture

Random body shuffle every night—can we still function?

If Windows 7 doesn't support WSL, then what is "Subsystem for UNIX-based Applications"?

How can I set the aperture on my DSLR when it's attached to a telescope instead of a lens?

A term for a woman complaining about things/begging in a cute/childish way

What is an "asse" in Elizabethan English?

How to write capital alpha?

Is there public access to the Meteor Crater in Arizona?

Dyck paths with extra diagonals from valleys (Laser construction)

Amount of permutations on an NxNxN Rubik's Cube

Does the Mueller report show a conspiracy between Russia and the Trump Campaign?

How many morphisms from 1 to 1+1 can there be?

Central Vacuuming: Is it worth it, and how does it compare to normal vacuuming?

A letter with no particular backstory

What is the difference between a "ranged attack" and a "ranged weapon attack"?

macOS: Name for app shortcut screen found by pinching with thumb and three fingers

How to run automated tests after each commit?



How to reindex programmatically in Magento2



Planned maintenance scheduled April 23, 2019 at 23:30UTC (7:30pm US/Eastern)
Announcing the arrival of Valued Associate #679: Cesar Manara
Unicorn Meta Zoo #1: Why another podcast?Fix 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














bumped to the homepage by Community 12 mins ago


This question has answers that may be good or bad; the system has marked it active so that they can be reviewed.






















    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














    bumped to the homepage by Community 12 mins ago


    This question has answers that may be good or bad; the system has marked it active so that they can be reviewed.


















      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





      bumped to the homepage by Community 12 mins ago


      This question has answers that may be good or bad; the system has marked it active so that they can be reviewed.







      bumped to the homepage by Community 12 mins ago


      This question has answers that may be good or bad; the system has marked it active so that they can be reviewed.
























          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,17924382




                            7,17924382























                                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

                                        “%fieldName is a required field.”, in Magento2 REST API Call for GET Method Type The Next...

                                        How to change City field to a dropdown in Checkout step Magento 2Magento 2 : How to change UI field(s)...

                                        變成蝙蝠會怎樣? 參考資料 外部連結 导航菜单Thomas Nagel, "What is it like to be a...