public function createSearchIndex(OutputInterface $output, $iterationCount, $commit)
    {
        $output->writeln('Creating Elasticsearch Search Engine Index...');

        if (!$this->searchHandler instanceof SearchHandler) {
            throw new RuntimeException(sprintf('Expected to find an instance of %s, but found %s', SearchHandler::class, get_class($this->searchHandler)));
        }

        $stmt = $this->getContentDbFieldsStmt(['count(id)']);
        $totalCount = (int) $stmt->fetchColumn();
        $stmt = $this->getContentDbFieldsStmt(['id', 'current_version']);
        $this->searchHandler->purgeIndex();
        /** @var \Symfony\Component\Console\Helper\ProgressBar $progress */
        $progress = new ProgressBar($output);
        $progress->start($totalCount);
        $i = 0;
        do {
            $contentObjects = [];
            for ($k = 0; $k <= $iterationCount; ++$k) {
                if (!$row = $stmt->fetch(PDO::FETCH_ASSOC)) {
                    break;
                }
                try {
                    $contentObjects[] = $this->persistenceHandler->contentHandler()->load(
                        $row['id'],
                        $row['current_version']
                    );
                } catch (NotFoundException $e) {
                    $this->logWarning($progress, "Could not load current version of Content with id ${row['id']}, so skipped for indexing. Full exception: " . $e->getMessage());
                }
            }
            foreach ($contentObjects as $contentObject) {
                try {
                    $this->searchHandler->indexContent($contentObject);
                    // Skip location indexing if search engine does not use it, or if content does not have locations
                    if (empty($contentObject->versionInfo->contentInfo->mainLocationId)) {
                        continue;
                    }
                    $this->indexLocations($contentObject->versionInfo->contentInfo->id, $progress);
                } catch (NotFoundException $e) {
                    $this->logWarning($progress, 'Content with id ' . $contentObject->versionInfo->id . ' has missing data, so skipped for indexing. Full exception: ' . $e->getMessage());
                }
            }
            if ($commit) {
                $this->searchHandler->flush();
            }
            $progress->advance($k);
        } while (($i += $iterationCount) < $totalCount);
        $progress->finish();
        $output->writeln('');

        $output->writeln('Finished creating Elasticsearch Search Engine Index');
    }