索引的话, 主要是为每一个文档生成一个hash值, 然后通过hash值确定要索引到哪个shard, 然后每一个shard的所有replica里有一个leader, 索引请求先发到leader, 再由leader...注: ClientNode给ShardNode发送请求的时候, 通过req.params里的shards.purpose参数注明此次请求的目的, shards.purpose是一个int值, 可以按位同时存储多个请求目的...但是在solr中, 每次要获得一个文档的stored/docValue字段的时候, 都要调用SolrDocumentFetcher.doc(int i, Set fields) 方法,...补全字段阶段的想法是非常直观的, 因为要返回的20个文档分散在3个分片中, 因此先把20个文档ID按所在的shard分3组, 然后分别向3个ShardNode异步发送3个请求, 这次每个请求直接指定了IDS...类似的情况还有可能在获取ids阶段召回了文档1, 但是在获取字段阶段, 文档1已经被删除了. 类似的问题其实是需要在两次请求的时候维护每个分片索引的一致性的, 目前solr没有做.