Solr介绍
Solr是一个独立的企业级搜索应用服务器,它对外提供类似于WebService的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过http get操作提出查找请求,并得到XML格式的返回结果。
Solr是一个高性能,采用Java 5开发,基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,它同时也实现了可配置、可扩展并对查询性能进行了优化,并且Solr还提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。
Solr的工作方式
数据通过http协议利用XML加到一个搜索索引库中,Solr查询该索引库也是通过http协议收到一个XML/JSON响应来实现。它的主要特点高效、灵活的缓存功能,垂直搜索功能,高亮显示搜索结果,通过索引复制来提高可用性,提供一套强大Data Schema来定义字段,类型和设置文本分析,提供基于Web的管理界面。
因为Solr是JAVA开发的,所以需要先安装JDK.可以访问下我上一篇的文章 Linux配置JDK.
安装Solr
从Solr官方网站 http://lucene.apache.org/solr/下载相应版本的Solr压缩包
使用tar -zxvf solr-8.5.0.tgz
进行解压
我们进入到解压后的目录下,可以看到Solr的所有文件目录,如下图所示,其中在bin目录中可以使用Solr自带的Jetty服务器来启动Solr服务,但是我们一般不用这个,contrib目录下存放的是扩展包,我们一般也不用。
安装Tomcat服务器
Tomcat官方网站http://tomcat.apache.org下载相应版本的压缩包
同样先进行解压文件,即可看到解压后的apache-tomcat-8.5.71目录。
接着我们在/usr/local目录下新建一个solr目录,再将解压好的apache-tomcat-8.5.71目录复制一份到/usr/local/solr目录下并且重命名为tomcat,如下图所示,进入/usr/local/solr/tomcat目录之后即可看到我们非常熟悉的东西了。
mkdir /usr/local/solr
cp apache-tomcat-8.5.71 /usr/local/solr/tomcat -r
cd /usr/local/solr/tomcat
Solr与Tomcat相结合
进入到Solr 8.5.0的/server/solr-webapp目录下面,将webapp目录复制一份到/usr/local/solr/tomcat/webapps目录下,并且重命名为solr。
cp -r webapp /usr/local/solr/tomcat/webapps/solr
复制关键jar包
进入到solr-8.5.0/dist目录中,你会看到solr-dataimporthandler-8.5.0.jar和solr-dataimporthandler-extras-8.5.0.jar这两jar包,如下图所示。
现在我们所要做的事便是将这两jar包复制到solr(它位于/usr/local/solr/tomcat/webapps目录下)的WEB-INF/lib目录下,使用如下命令即可。
cp solr-dataimporthandler*.jar /usr/local/solr/tomcat/webapps/solr/WEB-INF/lib
接着进入到solr-8.5.0/server/lib目录中,把里面以http2和metrics开头的jar包全部复制到solr(它位于/usr/local/solr/tomcat/webapps目录下)的WEB-INF/lib目录下,使用如下命令即可。
cp * /usr/local/solr/tomcat/webapps/solr/WEB-INF/lib
接着进入到solr-8.5.0/server/lib目录中,把里面以http2和metrics开头的jar包全部复制到solr(它位于/usr/local/solr/tomcat/webapps目录下)的WEB-INF/lib目录下,使用如下命令即可。
cp http2*.jar /usr/local/solr/tomcat/webapps/solr/WEB-INF/lib
cp metrics*.jar /usr/local/solr/tomcat/webapps/solr/WEB-INF/lib
复制配置文件
jar包拷贝完毕之后,接下来复制配置文件,配置文件主要是关于log4j的。我们切换到solr-8.4.0/server/resources目录中,将里面关于log4j的配置文件都复制到solr(它位于/usr/local/solr/tomcat/webapps目录下)的WEB-INF/classes目录下(需要在WEB-INF下面手动创建classes目录),使用如下命令即可。
cp log4j*.xml /usr/local/solr/tomcat/webapps/solr/WEB-INF/classes
然后进入到solr应用的WEB-INF/classes
目录中,编辑一下log4j2.xml
配置文件,即把所有的${sys:solr.log.dir}修改为自己指定的真实路径(这里,我是在/usr/local/solr下创建了一个logs目录),如下图所示。
修改web.xml文件
编辑solr/WEB-INF
目录下面的web.xml
文件,在其中添加如下内容:
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<!-- 此处为CentOS可以识别的路径 -->
<env-entry-value>/usr/local/solr/solrhome</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
创建Solr/Home
页面、jar包以及配置文件都配置完成之后,我们就需要创建Solr/Home了,Solr/Home是用于存放Solr Core的,如果没有配好,或者没有配置到位,那么都无法访问Solr。
首先,我们在/usr/local/solr
目录下新建一个solrhome
文件夹,如此一来,/usr/local/solr目录下面就会有logs、solrhome以及tomcat这三个目录了
然后,进入到solr-8.5.0/server/solr目录中,将里面的全部文件都复制到solrhome目录下。
mkdir /usr/local/solr/solrhome
cp -rf * /usr/local/solr/solrhome
接着,进入到solr-8.5.0/example/example-DIH/solr/solr
目录中,将里面的conf文件夹和core.properties文件复制到solrhome目录下的core1目录中。
温馨提示:solrhome下面的core1目录是需要我们手动建立的,该目录就是Solr的片,也即实例。
mkdir /usr/local/solr/solrhome/core1
cp -rf * /usr/local/solr/solrhome/core1
编辑一下core.properties
文件,在其中添加name=core1这行配置,如下图所示。
cd /usr/local/solr/solrhome/core1
name=core1
进入到/usr/local/solr/solrhome/core1/conf
目录下,managed-schema、solrconfig.xml这两个文件。其中,solrconfig.xml文件在你以后配置MySQL导入数据时会用到它,managed-schema文件主要是配置Solr域的
检测Solr是否安装成功
经过上面的配置,单机版的Solr我们便配置完了。下面我们便来启动Tomcat服务器使用./startup.sh命令
Linux的防火墙默认只对外开放了一个22的端口,其他的端口都没打开,所以还得把它的防火墙设置一下,让它对Tomcat服务器的端口号放行。所以就直接禁用防火墙就可以了
systemctl stop firewalld # 禁用防火墙
systemctl disable firewalld # 防火墙开机也不启动
接下来,我们在浏览器地址栏中输入http://虚拟机ip地址:8080并回车,显示以下网址说明Tomcat配置成功
继续输入http://虚拟机ip地址:8080/solr/index.html,看到以下网站说明Solr配置成功
访问问题出现404找不到页面问题
- 可以先查看默认端口8080是否被占用 显示以下数据说明端口已被占用 可以使用
kill -9 进程号
进行删除
netstat -anp |grep 8080
- 如果不想删除进程可以进入tomcat/conf目录中找到server.xml文件进行修改默认端口号
修改以后进入tomcat/bin目录输入
cd /usr/local/solr/tomcat/bin
./shutdown.sh # 进行关闭
ps -ef|grep java # 查看进程是否关闭
如果出现以下相似信息说明还在运行这时可以使用 kill -9 27125 进行删除进程,删除后再次查看如果没有以下信息后使用 ./startup.sh 再次运行
好了, 到此已经是全部的内容了…加油