$solr.installation.dir/bin/solr start -e
来启动solr本身给出的例子的过程,虽然没有一步步说明,但是相信在查看了quickstart这篇教程之后,应该可以按照教程上所说的步骤一步步完成,但是虽然是完成了,但是仍然对里面到底是如何实现的还是云里雾里,也许有些人可能就很快就能知道这到底发生了什么,但是对于一个完全是new learner的我来说,就很难明白。像使用
solr start -e cloud -noprompt这个命令之后,虽然能够傻瓜式地得到一个两个节点两个shard的索引,但是我仍然不明白shard表示的是什么意思,以及这两个节点到底是怎样一种方式建成的。下面在详细介绍solr的丰富的功能之前,先介绍一下最基本的solr.installation.dir中的各个文件夹的作用好了。solr中的文件结构如下图。(由于是在windows下写的这篇文章,所以截图是截取了windows下的solr的文件结构的图)
可以看见上图有七个文件夹和五个txt文件,其中README.txt文件已经介绍了其中各个文件夹的作用。bin文件夹里存放的是solr为了方便使用所编写好的脚本,之前所说的bin/solr就指的是使用bin文件夹下的solr脚本去执行一些命令。contrib文件夹里存放的大多是一些第三方提供的类库,使用这些类库能够极大扩展solr的功能。dist文件夹中存放的是solr自身所用到的一些核心类。docs文件夹里存放的是solr的文档,其中的index.html是solr介绍的根页面,在其中可以有多个超链接到不同的空能介绍,还包括了solr中的一些api的介绍。example文件夹里存放的是solr的例子。在之前的quickstart中,使用的命令bin/solr -e cloud -noprompt命令其实solr已经帮我们用默认的设置配置好了两个节点,最好把-noprompt去掉,然后按照提示一步步进行下去就知道具体的使用cloud模式创建collection的过程了。quickstart的那个命令其实是使用了
bin/solr start -cloud -s example/cloud/node1/solr -p 8983
bin/solr start -cloud -s example/cloud/node2/solr -p 7574 -z localhost:9984
这两条命令来创建了两个solr的实例,其中-z命令是指使用ZooKeeper,ZooKeeper服务器的地址是localhost:9984,然后默认使用2个shard和2个一样的节点(被称作replicationFactor)来创建gettingstarted这个collection,默认使用solr.installation.dir/server/solr/configsets/data_driven_schema_configs/conf路径下的配置文件作为这个collection的配置文件,之前有说过,新建一个collection的时候,需要在那个solr实例即solr.homedir的路径下有个conf文件夹,conf文件夹中含有solrconfig.xml文件和schema.xml文件,而solr.installation.dir/server/solr/configsets/这个路径下的配置文件都有很好的注释说明,在这里我们也暂时没用到,会在接下来讲有关配置文件的基本配置方法。
licenses文件夹显而易见是一些Solr遵循的licenses。server文件夹中是solr自带的jetty,使用bin/solr创建solr实例时,如果没有指定-d选项,即选用默认的服务器来进行实例的创建,那么solr会使用solr.installation.dir路径下的server文件夹里的jetty来进行solr实例的创建工作。
说到这里,想必有两个路径solr.home.dir和solr.installation.dir经常出现大家也看见了,那么这两个路径有什么不同呢?首先要知道solr的启动必须要在类似于tomcat一样的servlet容器中进行的,在servlet容器中启动之后的solr仅仅是solr的一个实例,能够使用url进行admin页面的访问,然而这个页面并没有任何的数据可以进行索引。同时在servlet容器中启动solr时,需要指定一个solr.home.dir,这个路径为这个solr实例的根路径。可以用同一个servlet容器的文件启动多个servlet容器(需要端口号不同),同时,启动多个servlet容器的过程中如果使用不同的solr.home.dir可以启动多个不同的solr实例。也就是说solr.home.dir是solr在servlet容器中启动的时候定义的。之后如果这个solr实例需要创建一个collection,则会在该solr的home.dir下创建一个存放该collection索引文件的文件夹,这个文件夹中需要有solr.xml文件夹,如果使用cloud模式启动的话,这个collection的配置文件会被上传到ZooKeeper中,在ZooKeeper的资源路径下会有个该collection名字命名的文件夹,然后相应的配置文件会存放在ZooKeeper的这个文件夹中。如果不是使用cloud模式启动的,则在solr的该collection路径下会有conf文件夹,这个文件夹里必须有solrconfig.xml和schema.xml文件。
而solr.installation.dir文件路径是你下载好的solr并解压缩的路径,这个路径中有上面那张图的那种文件结构,如果感兴趣的话可以阅读README.txt文件里的内容,这是使用一个软件所必须具有的素养,不然作者为什么要浪费时间去写这么一个文档呢?当然是为了让读者更好地了解这个项目的内容了。
下面会介绍solrconfig.xml和schema.xml中的一些常用的配置,以及这两个配置文件的作用。下面的介绍将不在cloud模式下进行,因为对于ZooKeeper我还需要进一步了解。