So Alexander, I found this post which seems to accomplish what I am trying to do.
However, since the update_by_query has its own query [in my case match_all], we might have a window where the documents that have not been used in the watcher's search query will get tagged.
Again for this, we can use a sliding time window, but is it possible that due some glitch/issue/delay the documents wont end up getting tagged and pickedup again by the next run of the watcher.