'Rebuild ElasticSearch indexes.
:arg chunk_size: how many documents to bulk index as a single chunk.
:arg index: the `Index` object to reindex into. Uses the current
promoted index if none provided.
:arg percent: 1 to 100--the percentage of the db to index.'

@classmethod
def reindex_all(cls, chunk_size=500, index=None, percent=100):

    from kuma.search.models import Index
    from kuma.search.tasks import prepare_index, finalize_index
    from kuma.wiki.tasks import index_documents
    index = (index or Index.objects.get_current())
    indexable = WikiDocumentType.get_indexable(percent)
    total = len(indexable)
    total_chunks = int(ceil((total / chunk_size)))
    pre_task = prepare_index.si(index.pk)
    post_task = finalize_index.si(index.pk)
    if (not total):
        chain(pre_task, post_task).apply_async()
    else:
        index_tasks = [index_documents.si(chunk, index.pk) for chunk in chunked(indexable, chunk_size)]
        chord_flow(pre_task, index_tasks, post_task).apply_async()
    message = _(('Indexing    %(total)d    documents    into    %(total_chunks)d    chunks    of    size    %(size)d    into    index    %(index)s.' % {'total': total, 'total_chunks': total_chunks, 'size': chunk_size, 'index': index.prefixed_name}))
    return message
