系统和软件版本:
系统:centos7.9 内核:3.10.0-1160.11 X86_64
solr:solr-7.7.3.tgz
MariaDB:10.5.8-MariaDB
一、JDK环境
[root@localhost ~]# java -version
openjdk version "1.8.0_275"
OpenJDK Runtime Environment (build 1.8.0_275-b01)
OpenJDK 64-Bit Server VM (build 25.275-b01, mixed mode)
二、安装solr
1、下载安装包:wget http://mirrors.hust.edu.cn/apache/lucene/solr/7.7.3/solr-7.7.3.tgz
解压:tar -zxvf solr-7.7.3.tgz -C /opt/
创建软连接:ln -sv /opt/solr-7.7.3 /opt/solr
2、修改系统的进程级别对资源的使用最大限制
[root@localhost ~]# grep -Ev "#|^$" /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536
* soft nproc 65536
* hard nproc 65536
修改系统级别打开文件句柄数
[root@localhost ~]# tail -1 /etc/sysctl.conf
fs.file-max=6553560
[root@localhost ~]# sysctl -p
net.ipv6.conf.all.disable_ipv6 = 1
vm.max_map_count = 262144
fs.file-max = 6553560
3、启动solr
[root@localhost ~]#solr start -force
[root@localhost ~]# netstat -tunlp|grep 8983
tcp 0 0 0.0.0.0:8983 0.0.0.0:* LISTEN 13998/java
4、打开页面访问
http://192.168.0.52:8983/solr/#/
三、创建新的core(可以理解为一个库)
1、在/opt/solr/server/solr/目录下创建core目录,目录名自定
[root@localhost solr]# ls server/solr/new_core/ -d
server/solr/new_core/
2、把/opt/solr/server/solr/configsets/_default目录下的conf目录,复制到new_core目录下
[root@localhost new_core]# pwd
/opt/solr/server/solr/new_core
[root@localhost new_core]# ll conf
总用量 140
-rw-r--r-- 1 root root 111 6月 24 16:01 dataimport.properties
drwxr-xr-x 2 root root 4096 6月 22 15:10 lang
-rw-r--r-- 1 root root 55138 6月 24 15:56 managed-schema
-rw-r--r-- 1 root root 308 4月 18 2020 params.json
-rw-r--r-- 1 root root 873 11月 8 2019 protwords.txt
-rw-r--r-- 1 root root 53728 6月 24 15:53 solrconfig.xml
-rw-r--r-- 1 root root 781 11月 8 2019 stopwords.txt
-rw-r--r-- 1 root root 1124 11月 8 2019 synonyms.txt
3、在web页面添加core
添加成功后,会在new_core目录下生成core.properties文件、data目录
[root@localhost new_core]# ls
conf core.properties data
四、导入mysql的数据到solr
1、在mysql中创建表并插入测试数据
MariaDB [(none)]> create database authcas;
Query OK, 1 row affected (0.001 sec)
MariaDB [(none)]> use authcas
Database changed
MariaDB [authcas]> create table uap_tb_gmvcs_user(uid int ,user_code int,account int ,password int ,user_name varchar(20) ,gender varchar(4) ,last_login_time datetime ,update_time datetime);
Query OK, 0 rows affected (0.055 sec)
MariaDB [authcas]> insert into uap_tb_gmvcs_user values (1,001,1000,1987,"jacky","man","2021-6-24 00:00:00","2021-6-24 00:00:00");
Query OK, 1 row affected (0.002 sec)
MariaDB [authcas]> insert into uap_tb_gmvcs_user values(2,002,1001,1987,"lily","fem","2021-6-23 00:00:00","2021-6-23 00:00:00"),(3,003,1002,1987,"lucy","fem","2021-6-22 00:00:00","2021-6-22 00:00:00"),(3,003,1003,1987,"hanmeimei","fem","2021-6-22 00:00:00","2021-6-22 00:00:00"),(2,002,1001,1987,"lilei","man","2021-6-21 00:00:00","2021-6-21 00:00:00");
Query OK, 4 rows affected (0.021 sec)
2、创建data-config.xml,并添加如下内容mysql数据库的连接地址,用户、密码及提取数据的语句字段;
[root@localhost conf]# ll data-config.xml
-rw-r--r-- 1 root root 999 6月 24 15:55 data-config.xml
[root@localhost conf]# pwd
/opt/solr/server/solr/new_core/conf
[root@localhost conf]# cat data-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<dataConfig>
<dataSource name="source1" type="JdbcDataSource"
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://192.168.0.52:3306/authcas"
user="root"
password="finest133"
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>
标签中的内容,主要是配置数据库查询语句与managed_schema域的对应关系。目的是,在core导入数据的时候,会先通过该配置信息链接到数据库通过查询语句把数据查询出来,通过数据库字段与managed_schema域关联关系创建索引
3、修改new_core目录下的managed-schema文件,把上步中data-config.xml中的field字段添加进来
<!-- import the keyword myselt -->
<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" />
这里里的name属性值,就是我们刚才在data-config.xml中标签的name属性值,这是name属性的第一个用途,关联起来。
name:是这个域的名称,在整个managed_schema文件里面需要唯一,不能重复,这里定义成跟数据库表字段的名称,方便使用。当然,也可以定义成其他名字。
type:是表示这个字段的类型是什么,string是字符串类型,int是整形数据类型,date是时间类型,相当于数据库里面的timestamp。
indexed:表示是否索引,索引的话就能查询到,否则,搜索的时候,不会出现。
stored:表示是否存储到索引库里面。
required:是否必须
multiValued:是否多值,比如商品信息中,一个商品有多张图片,一个Field想存储多个值的话,必须将multiValued设置为true
4、修改new_core目录下solrconfig.xml文件,把data-config.xml文件关联起来
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
</requestHandler>
5、下载数据库连接及导入的依赖jar包,下载地址:http://mvnrepository.com/
下载后放到如下目录/opt/solr/server/solr-webapp/webapp/WEB-INF/lib/
mysql-connector-java-8.0.11.jar
solr-dataimporthandler-7.4.0.jar
solr-dataimporthandler-extras-7.4.0.jar
然后在solrconfig.xml文件中引用3个包
[root@localhost conf]# pwd
/opt/solr/server/solr/new_core/conf
[root@localhost conf]# grep "lib dir" solrconfig.xml
<lib dir="./lib" />
<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-langid-\d.*\.jar" />
<lib dir="${solr.install.dir:../../../..}/dist/" regex="mysql-connector-java-.*\.jar" />
<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-dataimporthandler-.*\.jar" />
6、重启solr后进行数据导入;solr stop -all;solr start -force
7、搜索数据
原文链接:https://blog.csdn.net/u013160017/article/details/81037279