用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天就中秋国庆拉! 提前祝中秋国庆节日快乐!

相关推荐
南猿北者5 小时前
docker Network(网络)
网络·docker·容器
sam-1236 小时前
k8s上部署redis高可用集群
redis·docker·k8s
Fanstay9857 小时前
在Linux中使用Nginx和Docker进行项目部署
linux·nginx·docker
death bell9 小时前
Docker基础概念
运维·docker·容器
天幕繁星10 小时前
docker desktop es windows解决vm.max_map_count [65530] is too low 问题
windows·elasticsearch·docker·docker desktop
想学习java初学者11 小时前
Docker Compose部署Kafka(非Zookeeper)
docker·容器·kafka
尝尝你的优乐美12 小时前
Docker部署Vue项目原来可以那么好用
前端·nginx·docker
迷茫运维路12 小时前
docker搭建Jenkins2.346.3版本及常用工具集成配置(ldap、maven、ansible、npm等)
运维·docker·jenkins·cicd
我叫乐多你养我啊12 小时前
Windows远程连接Docker服务
笔记·docker
mit6.82415 小时前
[Docker#5] 镜像仓库 | 命令 | 实验:搭建Nginx | 创建私有仓库
linux·后端·docker·云原生