Search Api. Переиндексировать сущность

Главные вкладки

Аватар пользователя symbians60v5 symbians60v5 23 мая 2019 в 10:58

Здравствуйте. Есть Views на которую выводятся пользователи со статусом published. Соответственно, чтобы это поле можно было использовать для фильтра - его необходимо было проиндексировать. Но возникает проблема. Когда в админке меняешь статус пользователя на unpublished - оно всеравно продолжает отображаться во вьюхе. Лечится переиндексацией в search api, но хотелось бы чтобы все это применялось автоматом без копаний в настройках.
Нагуглил следющую функцию:

<?php    
$entity 
User::load($userId);
    
$indexes ContentEntity::getIndexesForEntity($entity);

    foreach (

$indexes as $index) {
      
$index->trackItemsUpdated('entity:user', [$userId.':en']);
      
$index->save();
    }
?>

но она не помогла. Подскажите плиз как переиндексировать конкретную ноду

Комментарии

Аватар пользователя gun_dose gun_dose 23 мая 2019 в 11:22

В настройках индекса есть галочка "индексировать элементы сразу". Если она выставлена, то сущность будет индексироваться сразу же после сохранения.

Аватар пользователя Murz Murz 11 октября 2019 в 13:05

После
<?php $index->trackItemsUpdated('entity:user', [$userId.':en']);?>
нужно ещё выполнить
<?php $index->indexItems(1);?>
т.к. первая функция только помечает сущность для переиндексации, а сама переиндексация произойдёт по ближайшему крону.
Но я не нашёл способа как заставить проиндексировать именно конкретную сущность, т.к. indexItems не поможет, если в очереди на индексацию есть ещё другие элементы. Например, у меня на сайте в очереди на индексацию постоянно куча элементов (постоянно поступают новые сущности для индексации пачками), поэтому данный трюк не помогает. Включать "индексировать элементы сразу" не могу т.к. это приводит к лагам при сохранении многих сущностей Sad