I perform exact KNN search with script_score, so all the documents of a given key is considered. The key used to pre-filter the documents is the link between different groups. The reason not to index all 1000 in one shard is to keep the number of docs per shard somewhat evenly distributed.