Docker安装solr和solr集群并安装IK以及连接数据库

转载请表明出处 https://blog.csdn.net/Amor_Leo/article/details/85270383 谢谢

Docker安装solr和solr集群并安装IK以及连接数据库

  • solr单机
    • 拉取镜像
    • 准备挂载文件
    • 放行端口号
    • 创建并运行容器
    • 创建核心
      • 配置IK分词
      • 连接数据库
  • solr集群
    • zk集群搭建
    • 拉取镜像
    • 准备挂载文件
    • 上传配置文件 conf
    • 放行端口号
    • 创建并运行容器
    • 创建collection

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

Docker安装solr和solr集群并安装IK以及连接数据库_第1张图片

配置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> 
    
    Docker安装solr和solr集群并安装IK以及连接数据库_第2张图片
    • 查看是否成功
      • 重启Solr
      docker restart solr
      
      Docker安装solr和solr集群并安装IK以及连接数据库_第3张图片

连接数据库

  • 下载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
    
  • 配置连接信息

    • 修改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>
    

    Docker安装solr和solr集群并安装IK以及连接数据库_第4张图片

    • 新建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属性对应
    • 修改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" />
    

    Docker安装solr和solr集群并安装IK以及连接数据库_第5张图片

    • field :
      • name : 字段的名称
      • type : 字段的类型
      • indexed :是否索引,索引的话就能查询到,否则,搜索的时候,不会出现
      • stored : 是否存储到索引库里面
      • required:是否必须
      • multiValued:是否多个值
      • Unique:字段是否可以重复
  • 重启Solr

docker restart solr
  • 数据导入

Docker安装solr和solr集群并安装IK以及连接数据库_第6张图片

Docker安装solr和solr集群并安装IK以及连接数据库_第7张图片

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

拉取镜像

三台分别执行
官网

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
      

上传配置文件 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

你可能感兴趣的:(架构)