目录
3.12.Solr定时任务建立索引3.12.1.获取验证令牌
1.文档说明
此文档说明在Linux Centos7.5版本下安装solr8.11.2的过程、安全访问、配置core、配置中文分词、建立与MYSQL指定表的全量索引和增量索引方式、查询数据验证、定时调度索引等。
安装环境当前版本
[root@VM-0-17-centos ~]# cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)
[root@VM-0-17-centos ~]# cat /proc/version
Linux version 3.10.0-1127.19.1.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC) ) #1 SMP Tue Aug 25 17:23:54 UTC 2020
2.下载准备
2.1.Solr下载地址
solr下载官方首页:Solr Downloads - Apache Solr
目前最新版本是9.0的,9.0对JDK的版本要求比较高,基于目前服务器相关应用所以选择了8.11.2版本的下载。
8.11.2版本下载地址如下:https://dlcdn.apache.org/lucene/solr/8.11.2/solr-8.11.2.tgz
2.2.ik-analyzer下载地址
ik-analyzer下载(中文分词需用到),可参考地址:
Central Repository: com/github/magese/ik-analyzer
选择了8.3.1版本下载:
https://repo1.maven.org/maven2/com/github/magese/ik-analyzer/8.3.1/ik-analyzer-8.3.1.jar
3.安装配置
3.1.前提准备
安装好JDK1.8并设置好JAVA_HOME环境变量,JDK的安装步骤不在这里描述。
3.2.启动服务
tar xvf solr-8.11.2.tgz
进入bin目录:/solr-8.11.2/bin
./solr start -p 8983 -force
浏览器访问以下地址可查看solr服务界面
若是购买的云服务器,需要开通安全组端口8983的访问权限或者主机防火墙端口,若是装了宝塔面板的也需要在宝塔中开放此端口。
3.3.停止服务
进入bin目录:/solr-8.11.2/bin
./solr stop
3.4.安全访问
在目录/solr-8.11.2/server/etc下面新增文件user.properties
vi user.properties
cshongye:12345678,admin
其中cshongye为登录名(自行调整),12345678为密码(自行调整),admin是登录角色;也是可以参考此格式配置多行,多行也就意味着可以配置多个登录用户访问solr服务;
找到目录:/solr-8.11.2/server/contexts,编辑文件solr-jetty-context.xml
增加以下内容:
<!--添加配置权限认证 开始-->
<Get name="securityHandler">
<Set name="loginService">
<New class="org.eclipse.jetty.security.HashLoginService">
<Set name="name">verify—name</Set>
<Set name="config"><SystemProperty name="jetty.home" default="."/>/etc/user.properties</Set>
</New>
</Set>
</Get>
<!--添加配置权限认证 结束-->
找到目录:/solr-8.11.2/server/solr-webapp/webapp/WEB-INF编辑文件web.xml,添加以下内容:
<security-constraint>
<web-resource-collection>
<web-resource-name>Solr</web-resource-name>
<url-pattern>/</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>verify-name</realm-name>
</login-config>
经过以上配置操作后,重启服务后访问系统需用户名和密码方可进入solr服务。
3.5.Add Core
点击按钮Add Core会报错,缺少XML文件的配置,这个时候需要复制
/solr-8.11.2/server/solr/configsets/_default/conf下面所有的文件到目录:/solr-8.11.2/server/solr/new_core
复制过来后,将managed-schema文件重命名为schema.xml
然后刷新页面Core Admin
同时此地方还会添加新core的时候后端会提示缺少dataimport的类,需要将\solr-8.11.2\dist目录下的两个JAR文件solr-dataimporthandler-8.11.2.jar、solr-dataimporthandler-extras-8.11.2.jar 复制到目录:solr-8.11.2\server\solr-webapp\webapp\WEB-INF\lib下
3.6.配置中文分词器
可参考链接:solr 使用IK分词器_鸭梨的药丸哥的博客-CSDN博客_solr配置ik分词器
也可以参考章节“单机版solr”进行安装:
其中第2点的5个文件在这个位置可以下载:
cc/ik-analyzer-solr - Gitee.com
将这5个文件上传至目录:/solr-8.11.2/server/solr-webapp/webapp/WEB-INF/classes
其中第3点,在目录/solr-8.11.2/server/solr/new_core/conf编辑文件managed-schema
将2.2.ik-analyzer下载的JAR文件放置到\server\solr-webapp\webapp\WEB-INF\lib下
验证中文分词:
3.7.与MYSQL表建立索引(准备条件)
CREATE TABLE `rss_item` (
`id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '主键',
`title` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '标题',
`link` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '网址',
`author` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '作者',
`keyword` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '关键字',
`pudate` datetime DEFAULT NULL COMMENT '发布日期',
`description` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '摘要',
`del` int DEFAULT '0' COMMENT '是否删除 正常0、删除1',
`createId` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建人',
`create_by` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建人姓名',
`create_date` datetime DEFAULT NULL COMMENT '创建时间',
`updateId` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '更新人',
`update_by` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '更新人名称',
`update_date` datetime DEFAULT NULL COMMENT '更新时间',
UNIQUE KEY `rss_item_id_IDX` (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci
3.8.与MYSQL表建立索引(全量更新)
在目录server\solr\new_core\conf下新建文件data-config.xml并填入以下内容
<?xml version="1.0" encoding="UTF-8" ?>
<dataConfig>
<!-- 数据库信息 -->
<dataSource type="JdbcDataSource"
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3308/dbname?characterEncoding=utf-8"
user="your username" password="your self password" encoding="UTF-8"/>
<document>
<entity name="rss_item" pk="id"
query="select * from rss_item where del = 0"
>
<!-- 对应数据库表的字段 -->
<field column="id" name="id" />
<field column="title" name="title" />
<field column="link" name="link" />
<field column="author" name="author" />
<field column="keyword" name="keyword" />
<field column="pubdate" name="pubdate" />
<field column="create_date" name="create_date" />
<field column="create_date" name="create_date" />
<field column="description" name="description" />
</entity>
</document>
</dataConfig>
3.9.与MYSQL表建立索引(增量更新)
<?xml version="1.0" encoding="UTF-8" ?>
<dataConfig>
<!-- 数据库信息 -->
<dataSource type="JdbcDataSource"
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3308/dbname?characterEncoding=utf-8"
user="your username" password="your self password" encoding="UTF-8"/>
<document>
<entity name="rss_item" pk="id"
query="select * from rss_item where del = 0"
deltaImportQuery="select * from rss_item where id='${dih.delta.id}'"
deltaQuery="select id from rss_item where create_date > '${dataimporter.last_index_time}' and del=0"
deletedPkQuery="select id from rss_item where del=1"
>
<!-- 对应数据库表的字段 -->
<field column="id" name="id" />
<field column="title" name="title" />
<field column="link" name="link" />
<field column="author" name="author" />
<field column="keyword" name="keyword" />
<field column="pubdate" name="pubdate" />
<field column="create_date" name="create_date" />
<field column="create_date" name="create_date" />
<field column="description" name="description" />
</entity>
</document>
</dataConfig>
基于以上data-config.xml中field的字段,在/server/solr/new_core/conf/managed-schema.xml
/server/solr/new_core/conf编辑文件managed-schema需要追加fieldType和field相关的属性
<!-- ik分词器 -->
<fieldType name="text_ik" class="solr.TextField">
<analyzer type="index">
<tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="false" conf="ik.conf"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<field name="create_date" type="string" indexed="true" stored="true" multiValued="false" />
<field name="pubdate" type="string" indexed="true" stored="true" multiValued="false" />
<field name="link" type="string" indexed="true" stored="true" multiValued="false" />
<field name="title" type="text_ik" indexed="true" stored="true" multiValued="false" />
<field name="author" type="text_ik" indexed="true" stored="true" multiValued="false" />
<field name="keyword" type="text_ik" indexed="true" stored="true" multiValued="false" />
<field name="description" type="text_ik" indexed="true" stored="true" multiValued="false" />
在目录server\solr\configsets\_default\conf文件solrconfig.xml中追加
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
</requestHandler>
3.10.Solr建立索引
3.10.1.建立索引
3.10.2.刷新状态
3.10.3.文档数量
3.11.查询验证
以上我们建立了索引文档,那我们来验证查询,也想看看索引的数据长什么样子的。
关于query里面的各个参数的使用可以参考:
https://blog.csdn.net/sun5769675/article/details/50718874
3.12.Solr定时任务建立索引
3.12.1.获取验证令牌
3.12.2.配置定时任务
参照linux curl命令
curl -H 'Authorization: Basic your token' -X GET http://localhost:8983/solr/new_core/dataimport?command=full-import&clean=true&commit=true&wt=json&indent=true&entity=rss_item&verbose=false&optimize=false&debug=false
可配置到自己的crontab中,或者配置到其他任务调度工具或者宝塔面板的计划任务,以下是宝塔面板计划任务的截图: