public function aggregateErrorsByReason()
{
$errorByReason = [];
foreach ($this->getErrorItems() as $item) {
$operationType = current(array_keys($item));
$itemData = $item[$operationType];
$index = $itemData['_index'];
$documentType = $itemData['_type'];
$errorData = $itemData['error'];
$errorKey = $operationType . $errorData['type'] . $errorData['reason'] . $index . $documentType;
if (!isset($errorByReason[$errorKey])) {
$errorByReason[$errorKey] = ['index' => $itemData['_index'], 'document_type' => $itemData['_type'], 'operation' => $operationType, 'error' => ['type' => $errorData['type'], 'reason' => $errorData['reason']], 'count' => 0];
$errorByReason[$errorKey]['count'] = 0;
}
$errorByReason[$errorKey]['count']++;
$errorByReason[$errorKey]['document_ids'][] = $itemData['_id'];
}
return array_values($errorByReason);
}