docker 拉取 solr
docker pull solr:8.11.1
创建 solr 容器并运行
docker run --name solr -d -p 8983:8983 -t solr:8.11.1
开放防火墙端口
firewall-cmd --zone=public --add-port=8983/tcp --permanent
firewall-cmd --reload
如果是云服务器,还需要在实例安全组配置开放端口,这里就不多赘述了。
直接访问 solr 服务
http://宿主服务器ip地址:8983
创建 solr core
docker exec -it solr bin/solr create_core -c ik_core
也可以在 admin 页面创建:
坑!!!
通过 admin 创建 core 后,发现会提示失败:
Error CREATEing SolrCore 'new_core': Unable to create core [new_core] Caused by: Can't find resource 'solrconfig.xml' in classpath or '/opt/solr/server/solr/new_core'
不过呢,会在容器内部 /opt/solr/server/solr 目录下创建一个 new_core 空文件夹,我们把默认配置文件拷贝到该文件夹下
docker exec -it solr /bin/bash
cp -r /opt/solr-8.11.1/server/solr/configsets/_default/conf/* /opt/solr-8.11.1/server/solr/new_core/
设置身份验证
export SOLR_AUTH_TYPE='basic'
export SOLR_AUTHENTICATION_OPTS='-Dbasicauth=username:password'
使用 docker-compose 安装 solr
version: '3.9'
services:
solr:
image: solr:8.11.1
container_name: solr
networks:
- nginx
expose:
- 8983
ports:
- '8983:8983'
restart: always
privileged: true
volumes:
- '/data/docker/solr/data:/var/solr/data/'
- '/data/docker/solr/server:/opt/solr-8.11.1'
networks:
nginx:
name: nginx
driver: bridge
安装配置 IK 分词器
使用的是 https://github.com/magese/ik-analyzer-solr
下载 jar
https://search.maven.org/search?q=com.github.magese
将 jar 包放入 solr 服务的 Jetty 或 Tomcat 的 webapp/WEB-INF/lib/ 目录下
docker cp ik-analyzer-8.5.0.jar solr:/opt/solr-8.11.1/server/solr-webapp/webapp/WEB-INF/lib/
复制配置文件
# 使用root用户(超级管理)进入 solr 的容器里创建文件夹
docker exec -it --user=root solr /bin/bash
# 创建文件夹(classes)
cd /opt/solr-8.4.0/server/solr-webapp/webapp/WEB-INF
mkdir classes
# 退出容器
exit
# 将下面的5个配置文件放入solr服务的Jetty或Tomcat的webapp/WEB-INF/classes/目录下
① IKAnalyzer.cfg.xml
② ext.dic
③ stopword.dic
④ ik.conf
⑤ dynamicdic.txt
docker cp IKAnalyzer.cfg.xml solr:/opt/solr-8.4.0/server/solr-webapp/webapp/WEB-INF/classes/
...
配置 solr 的 managed-schema,添加 ik 分词器
docker exec -it --user=root solr /bin/bash
cd /var/solr/data/ik_core/conf
vi managed-schema
添加如下:
<!-- ik分词器 -->
<fieldType name="text_ik" class="solr.TextField">
<analyzer type="index">
<tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="false" 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 啦 ~
评论区