/** * Deletes documents in bulk from index * * @return void|array */ public function bulkDeleteDocuments() { $documents = elasticsearch_get_documents_for_deletion(); if (empty($documents)) { return; } $params = []; foreach ($documents as $document) { $params['body'][] = ['delete' => $document]; } try { $result = $this->bulk($params); if (!empty($result)) { $items = elgg_extract('items', $result); foreach ($items as $action) { $status = elgg_extract('status', $action['delete']); $found = elgg_extract('found', $action['delete']); $guid = (int) elgg_extract('_id', $action['delete']); if ($status === 200 && $found || $status === 404 && !$found) { // document was removed elasticsearch_remove_document_for_deletion($guid); } else { // some error occured, reschedule delete elasticsearch_reschedule_document_for_deletion($guid); } } } return $result; } catch (\Exception $e) { $this->registerErrorForException($e); return false; } }
/** * Deletes documents in bulk from index * * @return void */ public function bulkDeleteDocuments() { $documents = elasticsearch_get_documents_for_deletion(); if (empty($documents)) { return; } $params = []; foreach ($documents as $document) { $params['body'][] = ['delete' => $document]; } try { $result = $this->bulk($params); if ($result) { foreach ($documents as $guid => $document) { elasticsearch_remove_document_for_deletion($guid); } } return $result; } catch (\Exception $e) { $this->registerErrorForException($e); return false; } }