/**
  * @param \Elastica\Document[] $documents
  * @param string|null $shardTimeout Timeout in Elasticsearch time format (1m, 15s, ...)
  */
 protected function sendDocuments(array $documents, $shardTimeout = null)
 {
     if (count($documents) === 0) {
         return;
     }
     try {
         // addDocuments (notice plural) is the bulk api
         $bulk = new \Elastica\Bulk(Connection::getSingleton()->getClient2());
         if ($shardTimeout !== null) {
             $bulk->setShardTimeout($shardTimeout);
         }
         $index = Connection::getFlowIndex(wfWikiId());
         $type = $index->getType($this->getTypeName());
         $bulk->setType($type);
         $bulk->addDocuments($documents);
         $bulk->send();
     } catch (\Exception $e) {
         $documentIds = array_map(function ($doc) {
             return $doc->getId();
         }, $documents);
         wfWarn(__METHOD__ . ': Failed updating documents (' . implode(',', $documentIds) . '): ' . $e->getMessage());
     }
 }