solr安装
- 首先使用
systemctl start docker
命令启动docker - 使用
docker pull solr:5.5.4
拉取solr的镜像.这里拉取的是公司用的5.5.4版本,学习建议不添加版本号,用latest版本 - 等待命令执行完成,可以使用
docker iamges
命令来看镜像是否拉取成功。 mkdir /opt/apps/solr
新建一个文件目录,用来把容器内部的配置文件移出到外面- 创建并且启动一个容器
docker run --name solr -d -p 8983:8983 solr:5.5.4
- 使用
docker ps -a
来检查容器是否启动成功,一般启动成功会生成CONTAINER ID - 使用
docker cp solr:/opt/solr/ /opt/apps/solr/
来复制容器内部的数据到本地。这一步不用迷惑,docker创建的容器内部编辑修改文件都十分不方便,所以要复制出文件来作为数据卷挂载到启动的容器,这样在本地修改文件,容器内部也会更改,减少了修改容器内部的难度。 - 使用
docker stop solr && docker rm solr
先停止容器,再删除容器,为创建有挂载数据卷的新容器做准备。 - 创建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 配置文件放置到该目录,使容器使用主机上的配置文件。
- 此时就完成了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天就中秋国庆拉! 提前祝中秋国庆节日快乐!