/** * @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()); } }