【转】docker安装solr8.11.1
一、简介
solr是一个基于Lucene的Java搜索引擎服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。
二、docker安装Solr8.11.1
1、安装镜像
docker pull solr:8.11.1
2、新建目录
mkdir -p /home/apps/solr
3、复制配置文件
# 运行一个临时solr
docker run --name solr -d -p 8983:8983 solr:8.11.1
# 复制配置文件
docker cp solr:/opt/solr/ /home/apps/solr/conf
# 停止并删除solr
docker stop solr && docker rm solr
4、创建并启动
docker run \
-d \
--name solr \
--restart=always \
--privileged=true \
-p 6016:8983 \
-v /home/apps/solr/conf:/opt/solr \
solr:8.11.1
5、访问
三、创建solr核心命令
例:创建一个名叫appLog的库 生成的库存储在 /var/solr/data/appLog 目录
1、命令方式创建
# 创建命令
docker exec -it --user=solr solr bin/solr create -c appLog
# 删除核心命令
docker exec -it --user=solr solr bin/solr delete -c appLog
2、在界面上创建
docker exec -it solr /bin/bash
# 创建库目录
mkdir /var/solr/data/appLog
# 复制配置文件到库目录
cp -r /opt/solr/server/solr/configsets/_default/conf /var/solr/data/appLog
# 登录solr界面,在Core Admin里新建appLog
4、更新字段
- 如果创建的库需要修改字段信息,可通过以下方式
# 将managed-schema复制到主机并修改内容
docker cp solr:/var/solr/data/xytbHttpLog/conf/managed-schema ./
# 将managed-schema复制回容器内
docker cp managed-schema solr:/var/solr/data/xytbHttpLog/conf/
四、配置solr帐号
1、添加帐号
vim /home/apps/solr/conf/server/etc/verify.properties
# 用户名 密码 权限
user: pass,admin
user1: pass,admin
user3: pass,admin
2、引入账号配置文件
vim /home/apps/solr/conf/server/contexts/solr-jetty-context.xml
# 添加以下内容
<Get name="securityHandler">
<Set name="loginService">
<New class="org.eclipse.jetty.security.HashLoginService">
<Set name="name">verify—name</Set>
<Set name="config"><SystemProperty name="jetty.home" default="."/>/etc/verify.properties</Set>
</New>
</Set>
</Get>
#最终结果如下
<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_0.dtd">
<Configure class="org.eclipse.jetty.webapp.WebAppContext">
<Set name="contextPath"><Property name="hostContext" default="/solr"/></Set>
<Set name="war"><Property name="jetty.base"/>/solr-webapp/webapp</Set>
<Set name="defaultsDescriptor"><Property name="jetty.base"/>/etc/webdefault.xml</Set>
<Set name="extractWAR">false</Set>
<Get name="securityHandler">
<Set name="loginService">
<New class="org.eclipse.jetty.security.HashLoginService">
<Set name="name">verify—name</Set>
<Set name="config"><SystemProperty name="jetty.home" default="."/>/etc/verify.properties</Set>
</New>
</Set>
</Get>
</Configure>
3、修改启动应用程序web.xml文件
vim /home/apps/solr/conf/server/solr-webapp/webapp/WEB-INF/web.xml
# 在最后追加以下内容
<security-constraint>
<web-resource-collection>
<web-resource-name>Solr</web-resource-name>
<url-pattern>/</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>verify-name</realm-name>
</login-config>
4、重启solr
docker restart solr
五、接口操作
1、删除数据
# 删除9-18号之前的所有数据
curl 'http://127.0.0.1:6016/solr/appLog/update?commit=true' -H 'Content-Type: text/xml' -d '<delete><query>createTime:[* TO 2022-09-18T15:30:01Z]</query></delete>' -u 'admin:123456'
# 删除30天前的数据
curl 'http://127.0.0.1:6016/solr/appLog/update?commit=true' -H 'Content-Type: text/xml' -d '<delete><query>createTime:[* TO NOW-1]</query></delete>' -u 'admin:123456'
六、参考
原作者:docker安装solr:https://www.cnblogs.com/lvlinguang/p/16831936.html