Здравствуйте. Есть 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();
}?>
но она не помогла. Подскажите плиз как переиндексировать конкретную ноду
Комментарии
В настройках индекса есть галочка "индексировать элементы сразу". Если она выставлена, то сущность будет индексироваться сразу же после сохранения.
Предполагаю, что имеется ввиду эта галочка. Она включена изначально.
После

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