隐藏

SolrCloud实战(二):索引集collection操作

发布:2022/6/21 21:58:50作者:管理员 来源:本站 浏览次数:1255

本篇文章用来介绍下在SolrCloud操作索引集collection操作API。

1、索引集Collection

先简单介绍下索引集概念



如图所示:
(1)物理结构
      三个Solr实例( 每个实例包括两个Core),组成一个SolrCloud。

(2)逻辑结构
      索引集合包括两个Shard(shard1、shard2),每个shard由三个core组成,其中一个Leader两个Replication。
      Leader是由zookeeper选举产生,zookeeper控制每个shard上三个Core的索引数据一致,解决高可用问题。
      并且用户发起索引请求分别从三个分片上获取,解决高并发问题。
      每个Core是Solr中一个独立运行单位,提供 索引和搜索服务。一个shard需要由一个Core或多个Core组成。由于collection由多个shard组成所以collection一般由多个core组成。

下面介绍下SolrCloud下的索引集相关操作API。

2、创建索引集

2.1、上传索引配置文件

创建Collection前需要先将配置上传到zookeeper的/solr/configs下。




这里_default是默认的配置文件,SolrCloud搭建启动后默认上传到zookeeper中。
book就是我定义上传的配置文件。下面开始介绍如何上传配置文件。

(1)创建配置文件
从solr的默认配置文件拷贝一份出来

$ cd /home/wentian/solr/solrcloud

$ mkdir -p configsets/book

$ cp -rf /home/wentian/app/solr/solr7/server/solr/configsets/_default/* /home/wentian/solr/solrcloud/configsets/book


(2)修改配置book/managed-schema

在根节点下面添加字段

   <!-- 书名 -->

   <field name="bookname" type="string" indexed="true" stored="true"/>

   <!-- 门店id -->

   <field name="shopid" type="string" indexed="true" stored="true"/>

   <!-- 价格,base_price基本价格、shop_price门店价格,pin_price拼团价格 -->

   <dynamicField name="*_price" type="pdouble" indexed="true"  stored="true"/>

   <!-- 是否参与拼团,0-不参与拼团,1-参与拼团 -->

   <field name="isPintuan" type="pint" indexed="true" stored="true"/>


(2)修改配置book/schema.xml

这里修改下其中的软硬提交方式。

这里先提个概念“硬提交是关于持久化的,软提交是关于可见性的”。后续再研究下软提交、硬提交的作用。

#修改提交间隔配置,该配置是对使用该配置的索引集有效。

<autoCommit>

<!--表示提交达到1万条的时候会自动进行一次硬提交-->

<maxDocs>10000</maxDocs>

<!--表示间隔300秒之后会执行一次硬提交-->

<maxTime>${solr.autoCommit.maxTime:300000}</maxTime>

<!--true表示每一次硬提交都开启一个新的Searcher-->

<openSearcher>false</openSearcher>

</autoCommit>


<autoSoftCommit>

<!--5秒执行一次软提交-->

<maxTime>${solr.autoSoftCommit.maxTime:5000}</maxTime>

</autoSoftCommit>


(3)上传配置到zookeeper

使用solr的zkcli.sh脚本执行上传配置

$ cd /home/wentian/app/solr/solr7/server/scripts/cloud-scripts

./zkcli.sh -zkhost 192.168.31.200:2181/solr -cmd upconfig -confdir /home/wentian/solr/solrcloud/configsets/book/conf -confname book


-zkhost --- zookeeper地址,由于SolrCloud部署时zookeeper地址带有/solr,这里也得加上。

-cmd upconfig --- 上传命令

-confdir --- 本地配置文件目录

-confname --- 上传到zookeeper中的配置名


上传后zookeeper显示如下配置:


2.2、创建collection


向任一一台solr访问下如下http地址:

http://192.168.31.200:18801/solr/admin/collections?action=CREATE&name=book&numShards=2&replicationFactor=3&maxShardsPerNode=2&collection.configName=book


name:索引集名

numShards:分片数

replicationFactor:副本数

maxShardsPerNode:每台主机最大分片数

collection.configName:索引配置文件名

这里numShards * replicationFactor <= maxShardsPerNode*solr节点数。


访问http地址结果如下:


2.3、访问solr


(1)此时访问solr,就能看到Collection结构、分片、leader和Replication副本,以及副本core所在节点。



(2)在节点所在主机上

SOLR_HOME所在目录下有core目录

SOLR_DATA_HOME目录下有core对应的索引文件目录



(3)查看任一core的自动生成的core.properties,显示core对应的相关信息。

[wentian@learn1 book_shard1_replica_n2]$ pwd

/home/wentian/solr/solrcloud/node/solr/book_shard1_replica_n2

[wentian@learn1 book_shard1_replica_n2]$ more core.properties

#Written by CorePropertiesLocator

#Thu Jun 03 21:05:34 GMT+08:00 2021

numShards=2

collection.configName=book

name=book_shard1_replica_n2

replicaType=NRT

shard=shard1

collection=book

coreNodeName=core_node5

3、更新配置文件

3.1、更新并上传


比如修改了managed-schema,那么同样使用zkcli.sh上传,命令如下:

$ cd /home/wentian/app/solr/solr7/server/scripts/cloud-scripts

$ ./zkcli.sh -zkhost 192.168.31.200:2181/solr -cmd upconfig -confdir /home/wentian/solr/solrcloud/configsets/book/conf/managed-schema -confname book/managed-schema


此时,虽然配置文件更新到了zookeeper,且自动更新到所有solr节点的core上,但是core仍然使用的是就配置文件。这里就需要用到collection配置文件reload功能。


##3.2、reload配置

访问任意一台solr,http地址如下:

```http

http://192.168.31.202:18801/solr/admin/collections?action=RELOAD&name=book


访问结果如下图所示,所有节点都刷新了。


4、删除collection


删除collection,只要访问任意一台solr,http地址如下:

http://192.168.31.202:18801/solr/admin/collections?action=DELETE&name=book


这里简单介绍下collection的基本操作:创建、删除、重载配置。后续继续学习下collection其他API功能。