ubuntu15.04下安装部署Solr5.1.0(基础)

        在网上搜了一下有关Solr部署的博客,发现很多都是你抄我我抄你,这种抄来抄去的东西就不要发出来了,直接自己收藏了不就好了吗?给互联网增加了这么多电子垃圾想想就心塞。强迫症发作不能容忍在使用旧版的软件,所以把Ubuntu更新成了15.04,然后最近老板开始赶潮流听另一个老板吹说他们使用了分布式索引技术,技术有多好多厉害,然后帮另一个老板部署了一下,另一个老板说搜索速度蹭蹭蹭就上去了,然后老板就让我们去和他们讨论一下,看看他们能不能也帮我们搞一下。然后去开了个会,互相吹比了之后感觉就这么不了了之了的感觉,但是老板那边还是要交代的,没办法,开始问别人问题,问能不能帮我们设计schema和部署,然后结果那边说solr不支持数据表的join操作。然后我就瞎了,solr5.1的dih的example里面,明明就有所谓的join操作,即根据这个表的id来选取另一个表中的数据。说出我看过这个例子然后给出截图之后,那边又说他们没做过,让我们照着例子就这么做吧。我当时真的差点一口老血喷在屏幕上。你早说你不知道怎么做的话我就不回去看solr的reference了好吗?花了我三天看了400多页的英文文档结果你跟我说我们自己做。自己做就自己做吧,谁让数据库设计的比较难搞。

        说了那么多废话,这就是为什么我会做solr的原因,然后5.0以上版本的部署在网上好像资料比较少,然后各种都是说使用tomcat来进行部署的,我其实觉得非常奇怪,因为5.0以上的版本自带了一个jetty(不知道以下的版本有没有),然后为什么还要自己新搞一个服务器然后再把那些奇奇怪怪的jar文件放在一些奇奇怪怪的路径下面呢?直接使用solr提供的bin/solr sh文件就行了啊。

        首先在http://www.apache.org/dyn/closer.cgi/lucene/solr/5.1.0 这边下载solr5.1.0 的tgz版本。因为是在Ubuntu下部署,所以在这里将文件下载到用户目录~下。Solr有两种运行模式,一种是单机版,就是一个实例跑到底,然后没有涉及到有关zookeeper的内容,因为之前一直没用过solr,所以到目前还没来得及了解zookeeper的使用方法,在solrcloud模式下总是不能新建一个Collection,据说是没有将配置文件上传到ZooKeeper上,所以无法新建一个新的collection。所以在这里就先介绍普通的方法。

        下载好之前说的文件之后,应该是有一个名为solr-5.1.0.tgz文件在用户目录~下,可以选择使用命令

tar xzf solr-5.1.0.tgz

命令将该压缩文件解压到当前目录中,得到一个名为solr-5.1.0的文件夹,下面就不需要将什么地方的war文件取出来放到tomcat的什么地方下面了。直接进入solr-5.1.0文件路径下,然后使用命令bin/solr 就可以进行一些solr的操作。其实就是solr已经将一些容器的启动代码已经封装在了bin/solr这个bash文件中,然后使用这个bash文件能够大大加快系统的启动和部署操作。可以使用bin/solr -help来查看帮助命令,看看有哪些使用方式。可以按照http://lucene.apache.org/solr/quickstart.html 得到一些基本的solr的操作方式。到这里只要大体知道solr和Lucene的操作其实差不多,solr只是在Lucene的外面封装了一层能够让用户更加方便快捷访问的接口罢了。所以solr能够搜出结果也应该分为两步,首先需要将数据(data)喂给(feed)给solr,然后solr会根据之前做好的配置对数据进行索引的构建。在运行完quickstart的例子之后,我还是很晕,不知道别人会不会这样,因为我完全不知道为什么这样就能够构建出索引了,为什么能这么全自动之类的。所以在运行完quickstart之后,我只知道可以使用bin/solr进行开启solr的命令,即bin/solr start -h hostname -p portnum -s coreDir -d serverDir之类的, 然后写到现在我好像又突然明白了core和collection的区别是什么,但是也不太确定,之前隐约感觉这两个概念是一样的,然后现在觉得一个core应该表示的是一个solr的实例,而一个solr的实例下面可以有好多个collection。不知道对不对,如果不对的话我日后会更改,也希望有人能够指出。 后来认真查看了一下文档,里面有这么一句话:"The cores that make up one logical index are called a collection. A collection is a essentially a single index that
can span many cores, both for index scaling as well as redundancy."翻译过来就是说由一个逻辑索引组成的cores成为一个collection。collection是一个可以扩展到多个core上的collection,这样做的原因在于使索引更具有伸缩性和增加冗余,从某种程度上增加了容错性。

        在我完成quickstart的过程之后,我自己根据之前所说的bin/solr start

bin/solr start -s ~/workspace/solrtest
这里之所以没用-d是因为-d默认指向当前solr的server文件,这样的话可以使用同一个server的文件启动不同的server实例。注意如果在一台机器上启动多个实例的话需要加上-p来使用不同的端口号。

        上述命令新建了一个solr core,然后发现我并不能开启,使用浏览器是可以访问当前主机的solr页面,然后页面中并不会显示当前主机的资源使用情况,会有莫名其妙的错误,为了让错误结果显示的更加明显,使用前台模式,即在terminal里开启solr的时候,在命令的最后增加-f字段,然后solr的输出会显示在控制台上,发现是因为该目录下面没有solr.xml文件。然后随便复制了一个solr.xml文件到该目录下,就发现quickstart中访问的那个网页能够正常显示主机的物理资源使用情况了。

         可以在bin/solr中使用命令来增加collection或者直接在http://localhost:8983/solr/#/ 中选择core来增加一个collection,这些增加的前提都是增加的collection路径已经存在,以及在该路径下存在一个conf文件。下图显示新建一个core时需要做的事情,首先name随意取,然后下一个填写之前在-s后面指向的路径下建立的一个新的路径,一般与name填写的内容一致,然后在该路径下还需要有conf文件夹,以及文件夹下需要有solrconfig.xml和schema.xml文件。这样才能够完美地新建好一个core。

ubuntu15.04下安装部署Solr5.1.0(基础)_第1张图片

一个solr实例中的文件和文件夹的路径如下:

corefolder                                                                                  solr.xml

conf

solrconfig.xml  schema.xml

即在该实例的目录下面需要有solr.xml文件,这在之前说过,不然无法正常使用solr,然后还有一个表示core的文件夹,这个文件夹下有一个conf文件夹,这个conf文件夹里至少有solrconfig.xml和schema.xml两个文件才能在上图的Add Core之后能够正确增加一个core。


        到这里我相信还有很多人仍然是云里雾里,然后下面会介绍solr中的各文件夹的主要功能以及solr的主要配置文件的内容

你可能感兴趣的:(Solr,solr,索引)