【轉】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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章