环境:centos七、JDK1.八、solr7.4.0 自带Jetty启动html
1、安装JDK1.8环境
一、下载JDKjava
jdk-8u172-linux-x64.rpmmysql
下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
二、安装JDKlinux
rpm -ivh jdk-8u131-linux-x64.rpm
三、配置JDK环境变量web
vim /etc/profilesql
在最后面加上下面这段数据库
JAVA_HOME=/usr/java/jdk1.8.0_172-amd64apache
CLASSPATH=%JAVA_HOME%/lib:%JAVA_HOME%/jre/libvim
PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bincentos
export PATH CLASSPATH JAVA_HOME
四、检查是否完成安装
java -version
javac
2、安装Solr
一、下载solr
solr-7.4.0.tgz
下载地址:http://archive.apache.org/dist/lucene/solr/
二、建立目录
[root@localhost /]# mkdir /chowdate
把solr-7.4.0.tgz复制到目录 /chowdate,接着解压。
[root@localhost /]# tar -zxvf solr-7.4.0.tgz
三、启动Solr
localhost bin]# /chowdate/solr-7.4.0/bin/solr start -force
四、打开页面
http://localhost:8983/solr/#/
五、启动到打开页面过程可能会出现的问题
若是执行./solr start -force 命令的时候会警告你系统文件打开数的问题,能够这样解决。修改完后要重启系统。
1. 修改 /etc/sysctl.conf 文件,在最后一行添加
fs.file-max = 6553560
2. 修改 /etc/security/limits.conf 文件,在最后一行添加
* soft nproc 65535 //注意,前面的星号也须要 * hard nproc 65535 * soft nofile 65535 * hard nofile 65535
若是出现solr安装成功,可是外界访问不到的问题,请检查防火墙是否关闭,或者8983端口是否容许开放!
关闭防火墙的命令:
systemctl stop firewalld.service #中止firewall
systemctl disable firewalld.service #禁止firewall开机启动
firewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)
开启端口的命令:
firewall-cmd --zone=public --add-port=8983/tcp --permanent (--permanent永久生效,没有此参数重启后失效)
3、添加本身的solr core
一、建立core目录
在/chowdate/solr-7.4.0/server/solr目录下建立new_core目录(名字本身定)
二、复制配置文件
复制/chowdate/solr-7.4.0/server/solr/configsets/_default下的conf文件夹到/chowdate/solr-7.4.0/server/solr/new_core/下。
三、添加core
在页面添加new_core(必须先作上面一、2步,否则会提示报错)。
添加成功后/chowdate/solr-7.4.0/server/solr/new_core/下会多两个东西。
core.properties文件、data目录
4、导入数据库中的数据到Solr中
一、建立data-config.xml文件
在/chowdate/solr-7.4.0/server/solr/new_core/conf目录下建立一个文件data-config.xml,与solrconfig.xml同级
二、修改solrconfig.xml文件
修改/chowdate/solr-7.4.0/server/solr/new_core/conf/solrconfig.xml文件
在<requestHandler name="/select" class="solr.SearchHandler">上放增长如下这段代码。
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"> <lst name="defaults"> <str name="config">data-config.xml</str> </lst> </requestHandler>
其中<str name="config"></str>里的内容就是咱们在上一步建立的data-config.xml文件,将它们关联起来。
三、修改data-config.xml文件
接下来咱们打开data-config.xml文件,配置相关的数据库属性,即咱们要导入那张表的哪些字段,内容以下:
<?xml version="1.0" encoding="UTF-8"?> <dataConfig> <dataSource name="source1" type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://10.10.9.103:3306/auth-cas" user="root" password="****" batchSize="-1" /> <document> <entity name="user" dataSource="source1" query="SELECT uid,user_code,account,password,user_name,gender,last_login_time,update_time FROM uap_tb_gmvcs_user"> <field column='uid' name='uid' /> <field column='user_code' name='user_code' /> <field column='account' name='account' /> <field column='password' name='password' /> <field column='user_name' name='user_name' /> <field column='gender' name='gender' /> <field column='last_login_time' name='last_login_time' /> <field column='update_time' name='update_time' /> </entity> </document> </dataConfig>
dataSource 中,url是你要访问的数据库路径,我这里指定到个人auth-cas 数据库。user是用户名,password是你的数据库密码。
query是一个sql语句,你须要导入哪张表的哪些字段,查就好了。而后<field>标签中的column属性是你SQL语句中查询的字段,跟数据库中对应;name属性是你给它起的一个别名,应该是必须指定的(本人没试过不指定的结果),至于name属性是干吗的,继续往下操做,天然会明白。有多个查询字段就须要有多个<field>标签,每个<field>标签对应一个字段。
document配置数据库查询语句与managed_schema域的对应关系。目的是,在core导入数据的时候,会先经过该配置信息连接到数据库经过查询语句把数据查询出来,经过数据库字段与managed_schema域关联关系建立索引
四、修改managed-schema文件
修改/chowdate/solr-7.4.0/server/solr/new_core/conf/managed-schema文件,将刚才在data-config.xml中配置的<field>标签添加进来。
<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" /> <!-- docValues are enabled by default for long type so we don't need to index the version field --> <field name="_version_" type="plong" indexed="false" stored="false"/> <field name="_root_" type="string" indexed="true" stored="false" docValues="false" /> <field name="_text_" type="text_general" indexed="true" stored="false" multiValued="true"/> <!-- 上面是原有的的字段 --> <!-- 本身的导入的字段 --> <field name="uid" type="string" indexed="true" stored="true" /> <field name="user_code" type="string" indexed="true" stored="true" /> <field name="account" type="string" indexed="true" stored="true" /> <field name="password" type="string" indexed="true" stored="true" /> <field name="user_name" type="string" indexed="true" stored="true" /> <field name="gender" type="string" indexed="true" stored="true" /> <field name="last_login_time" type="pdate" indexed="true" stored="true" /> <field name="update_time" type="pdate" indexed="true" stored="true" />
这里<field>里的name属性值,就是咱们刚才在data-config.xml中<field>标签的name属性值,这是name属性的第一个用途,关联起来。
name:是这个域的名称,在整个managed_schema文件里面须要惟一,不能重复,这里定义成跟数据库表字段的名称,方便使用。固然,也能够定义成其余名字。
type:是表示这个字段的类型是什么,string是字符串类型,int是整形数据类型,date是时间类型,至关于数据库里面的timestamp。
indexed:表示是否索引,索引的话就能查询到,不然,搜索的时候,不会出现。
stored:表示是否存储到索引库里面。
required:是否必须
multiValued:是否多值,好比商品信息中,一个商品有多张图片,一个Field想存储多个值的话,必须将multiValued设置为true
五、下载链接数据库和导入数据的jar包
如今涉及到数据库了,确定须要依赖一些jar包,下载三个jar包 下载地址:http://mvnrepository.com/
mysql-connector-java-8.0.11.jar
solr-dataimporthandler-7.4.0.jar
solr-dataimporthandler-extras-7.4.0.jar
三个jar包 放到/chowdate/solr-7.4.0/server/solr-webapp/webapp/WEB-INF/lib 目录下
而后打开/chowdate/solr-7.4.0/server/solr/new_core/conf/solrconfig.xml,引用上面提到的jar包,以下。
<!-- mysql导入增长的包开始--> <lib dir="${solr.install.dir:../../../..}/dist/" regex="mysql-connector-java-.*\.jar" /> <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-dataimporthandler-.*\.jar" /> <!-- mysql导入增长的包结束-->
关闭而后重启 ./bin/solr stop -all ./bin/solr start -force
六、导入数据
再次访问咱们刚才的页面,在左侧找到咱们部署好的new_core工程,点击Dataimport,再选择full-import(所有导入),点击Execute,出现下面的页面,证实这张表的数据已经导入进来了。
六、查找数据