This can be achived via the ScriptRunner Console:

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.search.SearchException
import com.atlassian.jira.issue.search.SearchResults
import com.atlassian.jira.issue.search.SearchProvider
import com.atlassian.jira.web.bean.PagerFilter
import com.atlassian.jira.security.JiraAuthenticationContext
import com.atlassian.jira.bc.issue.search.SearchService.ParseResult
import com.atlassian.jira.bc.issue.search.SearchService
import com.atlassian.jira.issue.index.IssueIndexingService
import com.atlassian.jira.util.ImportUtils

JiraAuthenticationContext authenticationContext = ComponentAccessor.getJiraAuthenticationContext()
def authContext = ComponentAccessor.getJiraAuthenticationContext()
def issueIndexingService = ComponentAccessor.getComponent(IssueIndexingService)
def issueManager = ComponentAccessor.getIssueManager()

String jql="project=TEST and status not in (Closed,Resolved)"
Number maxIndexCount = 600

SearchService searchService = ComponentAccessor.getComponentOfType(SearchService .class)
ParseResult parseResult = searchService.parseQuery(authenticationContext.getLoggedInUser(), jql)
int totalIssues = 0

if (parseResult.isValid())
{
    SearchResults results = searchService.search(authenticationContext.getLoggedInUser(), parseResult.getQuery(), PagerFilter.getUnlimitedFilter())
    final List issues = results?.results

    //Loop all issues
    issues.each { theIssue ->

        if (totalIssues < maxIndexCount)
        {
            boolean wasIndexing = ImportUtils.isIndexIssues()
            ImportUtils.setIndexIssues(true)
            issueIndexingService.reIndex(issueManager.getIssueObject(theIssue.id))
            ImportUtils.setIndexIssues(wasIndexing)
            totalIssues= totalIssues +1

            log.warn "Indexed: " + theIssue.getKey()
        }
    }
}