转载请表明出处 https://blog.youkuaiyun.com/Amor_Leo/article/details/85256735 谢谢
安装Solr7和Solr集群并安装IK以及连接数据库
安装单机Solr
官方把整个solr项目与jetty整合了,可直接运行,不需要把solr弄到tomcat上运行了!!
安装jdk8
之前写过 jdk8安装
安装solr
创建文件夹
mkdir /usr/local/solr
cd /usr/local/solr
下载
wget http://mirrors.hust.edu.cn/apache/lucene/solr/7.6.0/solr-7.6.0.tgz
解压
tar -zxvf solr-7.6.0.tgz -C /usr/local/solr
放行端口号
firewall-cmd --zone=public --add-port=8983/tcp --permanent
firewall-cmd --reload
启动
./usr/local/solr/solr-7.6.0/bin/solr start -force
- 命令
./usr/local/solr/solr-7.6.0/bin/solr stop -all
./usr/local/solr/solr-7.6.0/bin/solr status
创建solr core
-
创建core目录(名字自己定)
mkdir -p /usr/local/solr/solr-7.6.0/server/solr/new_core
-
复制配置文件
cp -r /usr/local/solr/solr-7.6.0/server/solr/configsets/_default/conf/ /usr/local/solr/solr-7.6.0/server/solr/new_core/
-
在页面添加new_core(与刚刚创建的core目录名一致)
- 或者使用命令
./usr/local/solr/solr-7.6.0/bin/solr create –c new_core
可以看见new_core目录下多了两个目录
配置IK分词
- 下载
网盘 提取码:kcs2
把ik压缩包放入到你的liunx系统 (我是用xftp) /usr/local/Ik 路径下mkdir -p /usr/local/Ik cd /usr/local/Ik
- 解压
unzip ikanalyzer-solr6.5.zip
- 复制jar
cd ikanalyzer-solr5/ cp ik-analyzer-solr5-5.x.jar /usr/local/solr/solr-7.6.0/server/solr-webapp/webapp/WEB-INF/lib/ cp solr-analyzer-ik-5.1.0.jar /usr/local/solr/solr-7.6.0/server/solr-webapp/webapp/WEB-INF/lib/
- 复制配置文件
mkdir -p /usr/local/solr/solr-7.6.0/server/solr-webapp/webapp/WEB-INF/classes cp ext.dic /usr/local/solr/solr-7.6.0/server/solr-webapp/webapp/WEB-INF/classes/ cp stopword.dic /usr/local/solr/solr-7.6.0/server/solr-webapp/webapp/WEB-INF/classes/ cp IKAnalyzer.cfg.xml /usr/local/solr/solr-7.6.0/server/solr-webapp/webapp/WEB-INF/classes/
- 修改schema
vim /usr/local/solr/solr-7.6.0/server/solr/new_core/conf/managed-schema
<fieldType name="text_ik" class="solr.TextField"> <analyzer type="index" useSmart="false" class="org.wltea.analyzer.lucene.IKAnalyzer" /> <analyzer type="query" useSmart="true" class="org.wltea.analyzer.lucene.IKAnalyzer" /> </fieldType>
- 查看是否成功
- 重启Solr
./usr/local/solr/solr-7.6.0/bin/solr stop -all ./usr/local/solr/solr-7.6.0/bin/solr start -force
- 查看是否成功
连接数据库
-
下载jar
官网- mysql-connector-java-x.x.x.jar
mysql-connector-java
一定要与自己数据库版本一致
cd /usr/local/solr/solr-7.6.0/server/solr-webapp/webapp/WEB-INF/lib/ wget http://central.maven.org/maven2/mysql/mysql-connector-java/5.1.47/mysql-connector-java-5.1.47.jar
- solr-dataimporthandler-extras-x.x.x.jar
solr-dataimporthandler-extras
wget http://central.maven.org/maven2/org/apache/solr/solr-dataimporthandler-extras/7.6.0/solr-dataimporthandler-extras-7.6.0.jar
- solr-dataimporthandler-x.x.x.jar
solr-dataimporthandler
wget http://central.maven.org/maven2/org/apache/solr/solr-dataimporthandler/7.6.0/solr-dataimporthandler-7.6.0.jar
- mysql-connector-java-x.x.x.jar
-
配置连接信息
- 修改solrconfig.xml
vim /usr/local/solr/solr-7.6.0/server/solr/new_core/conf/solrconfig.xml
<!-- mysql导入增加的包--> <lib dir="${solr.install.dir:../../../..}/dist/" regex="mysql-connector-java-.*\.jar" /> <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-dataimporthandler-.*\.jar" />
在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>
- 新建data-config.xml
vim /usr/local/solr/solr-7.6.0/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://192.168.0.109:3306/solrtest" user="root" password="root" /> <document> <entity name="user" query="select * from user"> <field column="uid" name="uid" /> <field column="username" name="username" /> <field column="passward" name="passward" /> <field column="hobby" name="hobby" /> <field column="login_time" name="login_time" /> </entity> </document> </dataConfig>
- dataSource :
- url : 是数据库路径
- user : 是用户名
- password : 是数据库密码
- document : 配置数据库查询语句与managed_schema对应
- entity : 数据库表
- query : 是一个sql语句,查询
- field : 有多个查询字段就需要有多个field标签,每一个field标签对应一个字段
- column : 是查询的字段,跟数据库中对应
- name : 是一个别名,与managed-schema中的field标签的name属性对应
- entity : 数据库表
- 修改managed-schema
vim /usr/local/solr/solr-7.6.0/server/solr/new_core/conf/managed-schema
<!-- 自己导入的字段 --> <field name="uid" type="pint" indexed="true" stored="true" /> <field name="username" type="text_ik" indexed="true" stored="true" /> <field name="passward" type="string" indexed="true" stored="true" /> <field name="hobby" type="string" indexed="true" stored="true" /> <field name="login_time" type="pdate" indexed="true" stored="true" />
- field :
- name : 字段的名称
- type : 字段的类型
- indexed :是否索引,索引的话就能查询到,否则,搜索的时候,不会出现
- stored : 是否存储到索引库里面
- required:是否必须
- multiValued:是否多个值
- Unique:字段是否可以重复
-
重启Solr
./usr/local/solr/solr-7.6.0/bin/solr stop -all
./usr/local/solr/solr-7.6.0/bin/solr start -force
- 数据导入
solr集群
zk集群搭建
之前写过 Docker搭建zookeeper集群 或者 安装zookeeper集群
- 环境
- zk
192.168.0.111:2181
192.168.0.112:2181
192.168.0.113:2181 - solr
192.168.0.111
192.168.0.112
192.168.0.113
- zk
solr集群
创建文件夹
三台分别执行
mkdir -p /usr/local/solrCloud/
下载
三台分别执行
cd /usr/local/solrCloud/
wget http://mirrors.hust.edu.cn/apache/lucene/solr/7.6.0/solr-7.6.0.tgz
解压
三台分别执行
tar -zxvf solr-7.6.0.tgz -C /usr/local/solrCloud/
修改配置文件
三台分别执行
-
修改 solr.in.sh
vim /usr/local/solrCloud/solr-7.6.0/bin/solr.in.sh
- 192.168.0.111
ZK_HOST="192.168.0.111:2181,192.168.0.112:2181,192.168.0.113:2181" SOLR_HOST="192.168.0.111" SOLR_PORT=8983
- 192.168.0.112
ZK_HOST="192.168.0.111:2181,192.168.0.112:2181,192.168.0.113:2181" SOLR_HOST="192.168.0.112" SOLR_PORT=8983
- 192.168.0.113
ZK_HOST="192.168.0.111:2181,192.168.0.112:2181,192.168.0.113:2181" SOLR_HOST="192.168.0.113" SOLR_PORT=8983
-
修改 solr.xml
vim /usr/local/solrCloud/solr-7.6.0/server/solr/solr.xml
- 192.168.0.111
<str name="host">${host:192.168.0.111}</str>
- 192.168.0.112
<str name="host">${host:192.168.0.112}</str>
- 192.168.0.113
<str name="host">${host:192.168.0.113}</str>
-
配置IK分词
三台分别执行- 下载
网盘 提取码:kcs2
把ik压缩包放入到你的liunx系统 (我是用xftp) /usr/local/Ik 路径下mkdir -p /usr/local/Ik cd /usr/local/Ik
- 解压
unzip ikanalyzer-solr6.5.zip
- 复制jar
cd ikanalyzer-solr5/ cp ik-analyzer-solr5-5.x.jar /usr/local/solrCloud/solr-7.6.0/server/solr-webapp/webapp/WEB-INF/lib/ cp solr-analyzer-ik-5.1.0.jar /usr/local/solrCloud/solr-7.6.0/server/solr-webapp/webapp/WEB-INF/lib/
- 复制配置文件
mkdir -p /usr/local/solrCloud/solr-7.6.0/server/solr-webapp/webapp/WEB-INF/classes cp ext.dic /usr/local/solrCloud/solr-7.6.0/server/solr-webapp/webapp/WEB-INF/classes/ cp stopword.dic /usr/local/solrCloud/solr-7.6.0/server/solr-webapp/webapp/WEB-INF/classes/ cp IKAnalyzer.cfg.xml /usr/local/solrCloud/solr-7.6.0/server/solr-webapp/webapp/WEB-INF/classes/
- 下载连接数据库jar
官网
三台分别执行 - mysql-connector-java-x.x.x.jar
mysql-connector-java
一定要与自己数据库版本一致
cd /usr/local/solrCloud/solr-7.6.0/server/solr-webapp/webapp/WEB-INF/lib/ wget http://central.maven.org/maven2/mysql/mysql-connector-java/5.1.47/mysql-connector-java-5.1.47.jar
- solr-dataimporthandler-extras-x.x.x.jar
solr-dataimporthandler-extras
wget http://central.maven.org/maven2/org/apache/solr/solr-dataimporthandler-extras/7.6.0/solr-dataimporthandler-extras-7.6.0.jar
- 下载
-
solr-dataimporthandler-x.x.x.jar
solr-dataimporthandlerwget http://central.maven.org/maven2/org/apache/solr/solr-dataimporthandler/7.6.0/solr-dataimporthandler-7.6.0.jar
放行端口号
三台分别执行
firewall-cmd --zone=public --add-port=8983/tcp --permanent
firewall-cmd --zone=public --add-port=7983/tcp --permanent
firewall-cmd --reload
上传配置文件 conf
我用的是之前搭建的单机版solr
cd /usr/local/solr/solr-7.6.0/server/scripts/cloud-scripts
./zkcli.sh -zkhost 192.168.0.111:2181,192.168.0.112:2181,192.168.0.113:2181 -cmd upconfig -confdir /usr/local/solr/solr-7.6.0/server/solr/new_core/conf -confname myconf
启动
三台分别执行
./usr/local/solrCloud/solr-7.6.0/bin/solr start -force
创建collection
选取其中一个节点运行
http://其中一个solr节点的IP:8983/solr/admin/collections?action=CREATE&name=testcore&numShards=3&replicationFactor=3&maxShardsPerNode=3&autoAddReplicas=true&collection.configName=myconf
如果不指定配置文件 &collection.configName=myconf 那么就是默认_default/conf
http://192.168.0.111:8983/solr/admin/collections?action=CREATE&name=testcore&numShards=3&replicationFactor=3&maxShardsPerNode=3&autoAddReplicas=true&collection.configName=myconf
- 删除collection
http://其中一个solr节点的IP:8983/solr/admin/collections?action=DELETE&name=testcore&numShards=3&replicationFactor=3&maxShardsPerNode=3&autoAddReplicas=true
http://192.168.0.111:8983/solr/admin/collections?action=DELETE&name=testcore&numShards=3&replicationFactor=3&maxShardsPerNode=3&autoAddReplicas=true