转载请表明出处 https://blog.csdn.net/Amor_Leo/article/details/85270383 谢谢
Docker安装solr和solr集群并安装IK以及连接数据库
solr单机
拉取镜像
docker pull solr
准备挂载文件
- 创建文件夹并赋权
mkdir -p /usr/local/solr
chmod 777 /usr/local/solr
- 复制挂载的文件
docker run --name solr -d -p 8983:8983 solr
docker cp solr:/opt/solr/server /usr/local/solr
docker rm -f solr
- 赋权
chmod 777 /usr/local/solr/server/contexts/
chmod 777 /usr/local/solr/server/etc/
chmod 777 /usr/local/solr/server/lib/
chmod 777 /usr/local/solr/server/logs/
chmod 777 /usr/local/solr/server/modules/
chmod 777 /usr/local/solr/server/resources/
chmod 777 /usr/local/solr/server/scripts/
chmod 777 /usr/local/solr/server/scripts/cloud-scripts/
chmod 777 /usr/local/solr/server/solr/
chmod 777 /usr/local/solr/server/solr-webapp/
chmod 777 /usr/local/solr/server/solr-webapp/webapp/
放行端口号
firewall-cmd --zone=public --add-port=8983/tcp --permanent
firewall-cmd --reload
创建并运行容器
docker run --name solr -d -v /usr/local/solr/server:/opt/solr/server -p 8983:8983 --privileged=true solr
创建核心
docker exec -it --user=solr solr bin/solr create_core -c testcore
配置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/server/solr-webapp/webapp/WEB-INF/lib/ cp solr-analyzer-ik-5.1.0.jar /usr/local/solr/server/solr-webapp/webapp/WEB-INF/lib/
- 复制配置文件
mkdir -p /usr/local/solr/server/solr-webapp/webapp/WEB-INF/classes cp ext.dic /usr/local/solr/server/solr-webapp/webapp/WEB-INF/classes/ cp stopword.dic /usr/local/solr/server/solr-webapp/webapp/WEB-INF/classes/ cp IKAnalyzer.cfg.xml /usr/local/solr/server/solr-webapp/webapp/WEB-INF/classes/
- 修改schema
vim /usr/local/solr/server/solr/testcore/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
docker restart solr
- 查看是否成功
连接数据库
-
下载jar
官网- mysql-connector-java-x.x.x.jar
mysql-connector-java
一定要与自己数据库版本一致
cd /usr/local/solr/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/server/solr/testcore/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/server/solr/testcore/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/server/solr/testcore/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
docker restart solr
- 数据导入
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
拉取镜像
三台分别执行
官网
docker pull solr
准备挂载文件
三台分别执行
- 创建文件夹并赋权
mkdir -p /usr/local/solrCloud
chmod 777 /usr/local/solrCloud
- 复制挂载的文件
docker run --name solr -d -p 8983:8983 solr
docker cp solr:/opt/solr/server /usr/local/solrCloud/
docker rm -f solr
- 赋权
chmod 777 /usr/local/solrCloud/
chmod 777 /usr/local/solrCloud/server/
chmod 777 /usr/local/solrCloud/server/contexts/
chmod 777 /usr/local/solrCloud/server/etc/
chmod 777 /usr/local/solrCloud/server/lib/
chmod 777 /usr/local/solrCloud/server/logs/
chmod 777 /usr/local/solrCloud/server/modules/
chmod 777 /usr/local/solrCloud/server/resources/
chmod 777 /usr/local/solrCloud/server/scripts/
chmod 777 /usr/local/solrCloud/server/scripts/cloud-scripts/
chmod 777 /usr/local/solrCloud/server/solr/
chmod 777 /usr/local/solrCloud/server/solr-webapp/
chmod 777 /usr/local/solrCloud/server/solr-webapp/webapp/
- 配置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/server/solr-webapp/webapp/WEB-INF/lib/ cp solr-analyzer-ik-5.1.0.jar /usr/local/solrCloud/server/solr-webapp/webapp/WEB-INF/lib/
- 复制配置文件
mkdir -p /usr/local/solrCloud/server/solr-webapp/webapp/WEB-INF/classes cp ext.dic /usr/local/solrCloud/server/solr-webapp/webapp/WEB-INF/classes/ cp stopword.dic /usr/local/solrCloud/server/solr-webapp/webapp/WEB-INF/classes/ cp IKAnalyzer.cfg.xml /usr/local/solrCloud/server/solr-webapp/webapp/WEB-INF/classes/
- 下载
- 连接数据库
三台分别执行-
下载jar
官网- mysql-connector-java-x.x.x.jar
mysql-connector-java
一定要与自己数据库版本一致
cd /usr/local/solrCloud/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
-
上传配置文件 conf
我用的是之前搭建的单机版solr
docker exec -it solr /opt/solr/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 /opt/solr/server/solr/testcore/conf -confname myconf
或者用安装Solr7
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
放行端口号
三台分别执行
firewall-cmd --zone=public --add-port=8983/tcp --permanent
firewall-cmd --zone=public --add-port=7983/tcp --permanent
firewall-cmd --reload
创建并运行容器
- 192.168.0.111
docker run --name solr -d --hostname=192.168.0.111 --net=host -v /usr/local/solrCloud/server:/opt/solr/server --privileged=true solr bash -c 'solr start -f -z 192.168.0.111:2181,192.168.0.112:2181,192.168.0.113:2181'
- 192.168.0.112
docker run --name solr -d --hostname=192.168.0.112 --net=host -v /usr/local/solrCloud/server:/opt/solr/server --privileged=true solr bash -c 'solr start -f -z 192.168.0.111:2181,192.168.0.112:2181,192.168.0.113:2181'
- 192.168.0.113
docker run --name solr -d --hostname=192.168.0.113 --net=host -v /usr/local/solrCloud/server:/opt/solr/server --privileged=true solr bash -c 'solr start -f -z 192.168.0.111:2181,192.168.0.112:2181,192.168.0.113:2181'
- 依次打开
http://192.168.0.111:8983/ http://192.168.0.112:8983/ http://192.168.0.113:8983/
创建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