13.1SolrCloud集群使用手册之Collections API

时间:2022-02-25 07:22:19

name:指明collection名字 router.name:指定路由策略,默认为compositeId路由 numShards:collection的逻辑分片数量 shards:指定具体的shard列表 replicationFactor:一个分片的replicas数量 maxShardsPerNode :一个solr节点上可以创建的逻辑分片数量,默认值为1 createNodeSet:可以指定在那些solr节点上创建collection

路由规则

SolrCloud中对于文档分布在哪个shard上,提供了两种路由算法:compositeId和implicit

在创建Collection时,需要通过router.name指定路由策略,默认为compositeId路由。

compositeId

该路由为一致性哈希路由,shards的哈希范围从80000000~7fffffff。初始创建collection是必须指定numShards个数,compositeId路由算法根据numShards的个数,计算出每个shard的哈希范围,因此路由策略不可以扩展shard。

implicit

该路由方式指定索引具体落在路由到哪个Shard,这与compositeId路由方式索引可均匀分布在每个shard上不同。同时只有在implicit路由策略下才可创建shard。

利用solrJ新建索引时,需要在代码中指定索引具体落在哪个shard上,添加代码:

doc.addField("_route_", "shard_X");

同时在schema.xml添加字段

<field type="string"/>

当我们想指定配置文件,索引目录时,可以加入如下参数

property.name=value

 

string

 

No

     

Set core property name to value. See core.properties file contents.

 

可选参数如下:

key

 

Description

 

name

 

The name of the SolrCore. You‘ll use this name to reference the SolrCore when running commands with the CoreAdminHandler.

 

config

 

The configuration file name for a given core. The default is solrconfig.xml.

 

schema

 

The schema file name for a given core. The default is schema.xml

 

dataDir

 

Core‘s data directory as a path relative to the instanceDir, data by default.

 

configSet

 

If set, the name of the configset to use to configure the core (see Config Sets).

 

properties

 

The name of the properties file for this core. The value can be an absolute pathname or a path relative to the value of instanceDir.

 

transient

 

If true, the core can be unloaded if Solr reaches the transientCacheSize. The default if not specified is false. Cores are unloaded in order of least recently used first.

 

loadOnStartup

 

If true, the default if it is not specified, the core will loaded when Solr starts.

 

coreNodeName

 

Added in Solr 4.2, this attributes allows naming a core. The name can then be used later if you need to replace a machine with a new one. By assigning the new machine the same coreNodeName as the old core, it will take over for the old SolrCore.

 

ulogDir

 

The absolute or relative directory for the update log for this core (SolrCloud)

 

shard

 

The shard to assign this core to (SolrCloud)

 

collection

 

The name of the collection this core is part of (SolrCloud)

 

roles

 

Future param for SolrCloud or a way for users to mark nodes for their own use.

 

使用Collections API:CREATE来创建collection时需要符合下面的条件。

shards*replicationFactor <= maxShardsPerNode*Node数

:8080/solr-cloud/admin/collections?action=CREATE&name=myc&numShards=2&replicationFactor=3&maxShardsPerNode=2

:8080/solr-cloud/admin/collections?action=CREATE&name=myc2&numShards=2&replicationFactor=2&maxShardsPerNode=2&createNodeSet=192.168.137.171:8080_solr-cloud,192.168.137.172:8080_solr-cloud

13.1SolrCloud集群使用手册之Collections API

:8080/solr-cloud/admin/collections?action=CREATE&name=myc3&router.name=implicit&shards=shard1,shard2&replicationFactor=3&maxShardsPerNode=3

13.1SolrCloud集群使用手册之Collections API

指定配置文件

collection.configName=myconf2&property.config=solrconfig2.xml&property.schema=schema2.xml

13.1SolrCloud集群使用手册之Collections API

13.1SolrCloud集群使用手册之Collections API

2.删除collection

:8080/solr-cloud/admin/collections?action=DELETE&name=myc2

3.RELOAD collection

如果schema中的属性有变动,,只需要将正确的schema上传到服务器上之后重启solr即可

:8080/solr-cloud/admin/collections?action=RELOAD&name=myc

4. SPLITSHARD(纵向扩容)

使用Collections API:SPLITSHARD来创建SHARD时不需要符合下面的条件。

shards*replicationFactor <= maxShardsPerNode*Node数

整体逻辑:无缝连接和无downtime

旧shard此时继续提供服务并把旧索引转到新的shard上

旧shard同时继续索引新文档

旧shard同时把新文档转发给新shard,新shard索引新文档

旧索引全部迁移到新shard之后,旧shard关闭,新文档直接转发到新的shard上了

手动利用DELETESHARD API删除旧shard

implicit路由:只要创建Shard即可: 新建索引时,将索引建到新建Shard上,查询操作时,指定collection名称,得到的仍是整个集群返回的结果。

compositeId路由:通过分裂(SPLITSHARD)操作实现。

:8080/solr-cloud/admin/collections?action=SPLITSHARD&collection=myc&shard=shard1

13.1SolrCloud集群使用手册之Collections API

5.CREATESHARD

路由规则为implicit 时才可以使用。

使用Collections API:CREATESHARD来创建shard时需要符合下面的条件。

shards*replicationFactor <= maxShardsPerNode*Node数

:8080/solr-cloud/admin/collections?action=CREATESHARD&collection=myc3&shard=shard3

13.1SolrCloud集群使用手册之Collections API

6. DELETESHARD

删除inactive shard

:8080/solr-cloud/admin/collections?action=DELETESHARD&collection=myc2&shard=shard1

13.1SolrCloud集群使用手册之Collections API

7.CREATEALIAS

实现跨collection查询,新建和修改都是使用CREATEALIAS。

:8080/solr-cloud/admin/collections?action=CREATEALIAS&name=newc&collections=myc,myc2

13.1SolrCloud集群使用手册之Collections API

8.DELETEALIAS

:8080/solr-cloud/admin/collections?action=DELETEALIAS&name=newc

13.1SolrCloud集群使用手册之Collections API