示例#1
0
 /**
  * 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;
     }
 }
示例#2
0
 /**
  * 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;
     }
 }