Сортировка объектов по условию

Здравствуйте, есть индекс товаров различных компаний, товар можно маркировать как промо. Раньше промо товары компаний в результате сортировки оказывались первыми в поисковой выдаче. Теперь кейс изменился и необходимо первыми показывать не только промо товары, но и первый обычный товар каждой компании из выдачи, все остальные не маркированные товары компании идут уже после. Подскажите с чего начать?
Единственное что-то подобное было в данной статье https://sohabr.net/habr/post/256375/?version=95341
Можно подключить redis и в нем хранить временную информацию, но как определить id поисковой сессии?

В самом elasticsearch нет такого понятия как "id поисковой сессии". Вы, наверное, используете какой-то фреймворк, который создает этот id.