用Docker安装solr,练习solr的使用

solr安装

  1. 首先使用 systemctl start docker 命令启动docker
  2. 使用 docker pull solr:5.5.4 拉取solr的镜像.这里拉取的是公司用的5.5.4版本,学习建议不添加版本号,用latest版本
  3. 等待命令执行完成,可以使用 docker iamges 命令来看镜像是否拉取成功。
  4. mkdir /opt/apps/solr 新建一个文件目录,用来把容器内部的配置文件移出到外面
  5. 创建并且启动一个容器 docker run --name solr -d -p 8983:8983 solr:5.5.4
  6. 使用 docker ps -a 来检查容器是否启动成功,一般启动成功会生成CONTAINER ID
  7. 使用 docker cp solr:/opt/solr/ /opt/apps/solr/ 来复制容器内部的数据到本地。这一步不用迷惑,docker创建的容器内部编辑修改文件都十分不方便,所以要复制出文件来作为数据卷挂载到启动的容器,这样在本地修改文件,容器内部也会更改,减少了修改容器内部的难度。
  8. 使用 docker stop solr && docker rm solr 先停止容器,再删除容器,为创建有挂载数据卷的新容器做准备。
  9. 创建solr镜像的新容器 docker run -d --name solr --restart=always --privileged=true -p 8983:8983 -v /opt/apps/solr:/opt/solr solr:5.5.4
    • -d:以后台进程方式运行容器。
    • --name solr:为容器指定一个名称,这里是 "solr"。
    • --restart=always:配置容器在退出时自动重启。
    • --privileged=true:容器运行在特权模式下,拥有主机的所有权限。
    • -p 6016:8983:将主机的端口 8983 映射到容器内部的端口 8983。这样可以通过主机的 8983 端口访问容器中的 Solr 服务。
    • -v /home/apps/solr:/opt/solr:将主机的 /home/apps/solr/conf 目录挂载到容器内部的 /opt/solr 目录。这样可以将主机上的 Solr 配置文件放置到该目录,使容器使用主机上的配置文件。
  10. 此时就完成了solr的创建,我们可以通过http://127.0.0.1:8983 来进行访问,看能否访问成功,这里需要注意,如果你想在虚拟机外部访问,我更建议采用非docker环境安装,用tomcat来使solr的页面生效,因为我没找到docker安装的solr能够外部访问的方法,如果有人能找到,可以在我页面下方留言,我来更新。

附上一张成功访问的图


solr的使用

solr核心的知识点不在这里赘述,大家自行学习

配置核心

  • 因为solr安装好是没有核心的,这里需要新建一个核心:
    • 方式一:
      • 进入数据卷的目录, cd /opt/apps/solr/server/solr/
      • 创建核心文件目录: mkdir test_core
      • 复制solr自带的示例,这里高版本应该会有_default,我这里版本很低没有,我就用一个自带的sample_techproducts_configs来作为示例
      • 回到可视化页面来通过图形操作创建core
    • 方式二:
      • docker exec -it --user=solr my_solr bin/solr create -c my_core 其中my_solr换成容器名称 my_core为核心名称,创建好的核心默认位置为/opt/solr/server/solr中,路径下文件夹名称即为核心名称
    • 成功创建核心效果如下:

配置中文分词器

  • 提前配置分词器,再导入数据,可以避免分词器不生效
  • 复制分词器到docker中的lib文件夹中:
    • docker cp ik-analyzer-solr5-5.x.jar solr:/opt/solr/server/lib
    • docker cp solr-analyzer-ik-5.1.0.jar solr:/opt/solr/server/lib
  • 进入容器修改managed-schema,将分词器的字段配置进去,可以把内部文件复制出来修改,修改好再复制回去
    • 添加下述配置到文件末尾:
xml 复制代码
<fieldType name="text_cn" class="solr.TextField">
     <analyzer type="index">
         <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="true" conf="ik.conf"/>
         <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>
     <analyzer type="query">
         <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="true" conf="ik.conf"/>
         <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>
 </fieldType>
  • 重启solr docker restart solr进行分词
  • 放上一张成功的截图大功告成!

总结

因为公司有工作要做,摸鱼时间少,在草稿箱放了很久,拖到现在才总结,建议大家用最新版本的solr,相关的资源也好搜索获取,其次solr到此也只是安装了分词,在实际的生产中,常常和代码进行交互,而不是采用这种可视化界面。

还有9天就中秋国庆拉! 提前祝中秋国庆节日快乐!

相关推荐
漫无目的行走的月亮3 小时前
在Docker中运行微服务注册中心Eureka
docker
大道归简6 小时前
Docker 命令从入门到入门:从 Windows 到容器的完美类比
windows·docker·容器
zeruns8027 小时前
如何搭建自己的域名邮箱服务器?Poste.io邮箱服务器搭建教程,Linux+Docker搭建邮件服务器的教程
linux·运维·服务器·docker·网站
爱跑步的程序员~7 小时前
Docker
docker·容器
疯狂的大狗7 小时前
docker进入正在运行的容器,exit后的比较
运维·docker·容器
长天一色8 小时前
【Docker从入门到进阶】01.介绍 & 02.基础使用
运维·docker·容器
伊玛目的门徒8 小时前
docker 搭建minimalist-web-notepad
运维·docker·notepad
theo.wu10 小时前
使用Buildpacks构建Docker镜像
运维·docker·容器
wusam19 小时前
螺蛳壳里做道场:老破机搭建的私人数据中心---Centos下Docker学习04(环境准备)
学习·docker·centos
wusam1 天前
螺蛳壳里做道场:老破机搭建的私人数据中心---Centos下Docker学习03(网络及IP规划)
运维·服务器·网络·docker·容器