Example #1
0
$options['count'] = true;
$count = elgg_get_entities_from_private_settings($options);
$content .= '<tr>';
$content .= '<td>' . elgg_echo('elasticsearch:stats:elgg:update') . '</td>';
$content .= "<td>{$count}</td>";
$content .= '</tr>';
// content to reindex
$options = elasticsearch_get_bulk_options('reindex');
$count = 0;
if (!empty($options)) {
    $options['count'] = true;
    $count = elgg_get_entities_from_private_settings($options);
}
$content .= '<tr>';
$content .= '<td>' . elgg_echo('elasticsearch:stats:elgg:reindex');
$reindex_title = elgg_echo('elasticsearch:stats:elgg:reindex:action');
$last_ts = (int) elasticsearch_get_setting('reindex_ts');
if (!empty($last_ts)) {
    $reindex_title .= '&#10;&#10;' . elgg_echo('elasticsearch:stats:elgg:reindex:last_ts', [date('c', $last_ts)]);
}
$content .= elgg_view('output/url', ['confirm' => true, 'href' => 'action/elasticsearch/admin/reindex', 'text' => elgg_view_icon('refresh'), 'title' => $reindex_title, 'class' => 'mlm']);
$content .= '</td>';
$content .= "<td>{$count}</td>";
$content .= '</tr>';
$count = count(elasticsearch_get_documents_for_deletion());
$content .= '<tr>';
$content .= '<td>' . elgg_echo('elasticsearch:stats:elgg:delete') . '</td>';
$content .= "<td>{$count}</td>";
$content .= '</tr>';
$content .= '</table>';
echo elgg_view_module('inline', elgg_echo('elasticsearch:stats:elgg'), $content);
Example #2
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;
     }
 }
Example #3
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;
     }
 }