Идея как их отмечать на стороне еластика: иметь в документе поле например USERID_VIEW и добавлять в него ID пользователей которые отметили этот документ, ну и в поиске игнорировать доки которые содержат ID пользователя в USERID_VIEW .
Идея не очень хорошая. Потому что ...
Будет ли еластик держать в поле список 100K+ значений?
Нет, не будет.
Предложить можно следующее:
- держать список просмотренных пользователем документов отдельно от эластика, в отдельной базе (можно использовать какое нибудь KV-хранилище или просто SQL-базу)
- просмотренные документы дополнительно фильтровать
программно по этому списку
- если просмотренных документов мало, то вставлять их в запрос на исключение
- или держать короткий список просмотренных документов, например 100-200 позиций, или формировать его, например по дате, и вставлять в запрос