/** * @param \Elastica\Bulk\ResponseSet $responseSet */ protected function _init(ResponseSet $responseSet) { $this->_responseSet = $responseSet; foreach ($responseSet->getBulkResponses() as $bulkResponse) { if ($bulkResponse->hasError()) { $this->_actionExceptions[] = new ActionException($bulkResponse); } } }
/** * @param \Elastica\Response $response * * @throws \Elastica\Exception\Bulk\ResponseException * @throws \Elastica\Exception\InvalidException * * @return \Elastica\Bulk\ResponseSet */ protected function _processResponse(Response $response) { $responseData = $response->getData(); $actions = $this->getActions(); $bulkResponses = array(); if (isset($responseData['items']) && is_array($responseData['items'])) { foreach ($responseData['items'] as $key => $item) { if (!isset($actions[$key])) { throw new InvalidException('No response found for action #' . $key); } $action = $actions[$key]; $opType = key($item); $bulkResponseData = reset($item); if ($action instanceof AbstractDocumentAction) { $data = $action->getData(); if ($data instanceof Document && $data->isAutoPopulate() || $this->_client->getConfigValue(array('document', 'autoPopulate'), false)) { if (!$data->hasId() && isset($bulkResponseData['_id'])) { $data->setId($bulkResponseData['_id']); } if (isset($bulkResponseData['_version'])) { $data->setVersion($bulkResponseData['_version']); } } } $bulkResponses[] = new BulkResponse($bulkResponseData, $action, $opType); } } $bulkResponseSet = new ResponseSet($response, $bulkResponses); if ($bulkResponseSet->hasError()) { throw new BulkResponseException($bulkResponseSet); } return $bulkResponseSet; }