core:在Solr单机环境中,core本质上就是单个index。若需有多个index,那必须创建多个core。在SolrCloud环境中,单个index可以横跨多个Solr实例,这意味着单个index是由不同机器上的多个cores组成。
collection:由core组成的逻辑index叫做collection,一个collection是跨越多个cores的index,这使index可扩展并冗余备份。
shard:在SolrCloud中可以有多个collections。Collections可被分片,每个分片可有多个副本(Replica),同一副本下的相同分片称为shards。每个shards下的有一个分片为leader,该leader通过选举策略产生。
node:SolrCloud中,node是运行Solr的Java虚拟机实例,也就是Server(例如Tomcat、Jetty)。
理解core和collection的区别非常重要。在传统的单node solr中,core和collection的概念等同,都代表一个逻辑index。在SolrCloud中,多个nodes下的cores形成一个collection。
SolrCloud中,提供了两种路由算法:
compositeIdimplicit 在创建Collection时,需要通过router.name指定路由策略,默认为compositeId路由。
compositeId
该路由为一致性哈希路由,shards的哈希范围从80000000~7fffffff。初始创建collection是必须指定numShards个数,compositeId路由算法根据numShards的个数,计算出每个shard的哈希范围,因此路由策略不可以扩展shard。
implicit
该路由方式指定索引具体落在路由到哪个Shard,这与compositeId路由方式索引可均匀分布在每个shard上不同。同时只有在implicit路由策略下才可创建shard。