Solr 控制腳本參考

Solr 包含一個名為 "bin/solr" 的腳本,可讓您在 Solr 安裝或叢集上執行許多常見操作。

您可以啟動和停止 Solr、建立和刪除集合或核心、對 ZooKeeper 執行操作,以及檢查 Solr 和已設定分片的狀態。

您可以在 Solr 安裝的 bin/ 目錄中找到該腳本。bin/solr 腳本透過提供簡單的命令和選項來快速完成常見目標,使 Solr 更容易使用。

本指南中提供了更多 bin/solr 的使用範例,特別是在 啟動 SolrSolrCloud 入門 章節。

啟動和停止

啟動和重新啟動

start 命令會啟動 Solr。restart 命令可讓您在 Solr 已在執行中或已停止時重新啟動 Solr。

startrestart 命令有多個選項,可讓您在 SolrCloud 模式下執行、使用範例設定集、以非預設的主機名稱或連接埠啟動,以及指向本機 ZooKeeper 整合。

bin/solr start [選項]

bin/solr start --help

bin/solr restart [選項]

bin/solr restart --help

使用 restart 命令時,您必須傳遞您最初啟動 Solr 時傳遞的所有參數。在幕後,會啟動停止請求,因此 Solr 會在再次啟動之前停止。如果沒有節點已在執行中,重新啟動將會跳過停止步驟,並繼續啟動 Solr。

啟動參數

bin/solr 腳本提供了許多選項,可讓您以常見方式自訂伺服器,例如變更接聽連接埠。但是,大多數預設值對於大多數 Solr 安裝都足夠,尤其是在剛開始時。

-a "<jvmParams>"

選用

預設值:無

使用額外的 JVM 參數啟動 Solr,例如以 -X 開頭的參數。例如,若要設定 Java 除錯器以附加到 Solr JVM,您可以傳遞:-a "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=18983"。在大多數情況下,您應該將額外參數包在雙引號中。

如果您傳遞以 -D 開頭的 JVM 參數,您可以省略 -a 選項。

範例:

bin/solr start -a "-Xdebug -Xrunjdwp:transport=dt_socket, server=y,suspend=n,address=1044"
-j "<jettyParams>"

選用

預設值:無

啟動 Solr 時要傳遞給 Jetty 的額外參數。例如,要新增 Jetty 應該讀取的組態資料夾,您可以傳遞:-j "--include-jetty-dir=/etc/jetty/custom/server/"。在大多數情況下,您應該將額外參數包在雙引號中。

--cloud-c

選用

預設值:無

以 SolrCloud 模式啟動 Solr,這也會啟動 Solr 隨附的嵌入式 ZooKeeper 實例。嵌入式 ZooKeeper 實例會在 Solr 連接埠 + 1000 上啟動,因此如果 Solr 綁定到 8983,則為 9983。

如果您已經執行一個想要使用的 ZooKeeper 集群,而不是嵌入式(單節點)ZooKeeper,您也應該在 solr.in.sh/solr.in.cmd 中指定 ZK_HOST(請參閱 更新 Solr 包含檔案)或傳遞 -z 參數。

如需更多詳細資訊,請參閱下方的 SolrCloud 模式 章節。

範例bin/solr start -c

-d <dir>

選用

預設值:server/

定義伺服器目錄,預設為 server(如 $SOLR_TIP/server)。覆寫此選項並不常見。在同一主機上執行多個 Solr 實例時,更常見的做法是為每個實例使用相同的伺服器目錄,並使用 -s 選項使用唯一的 Solr 首頁目錄。

範例bin/solr start -d newServerDir

-e <name>

選用

預設值:無

使用範例組態啟動 Solr。提供這些範例是為了協助您更快開始使用 Solr,或只是嘗試特定功能。

可用的選項為

  • cloud:SolrCloud 範例

  • techproducts:綜合範例,說明 Solr 的許多核心功能

  • schemaless:無綱要範例(綱要是在索引期間從資料推斷而來)

  • films:從 _default configset 開始並動態新增明確欄位的範例

    有關範例組態的更多詳細資訊,請參閱下方的 使用範例組態執行 章節。

    範例bin/solr start -e schemaless

-f

選用

預設值:無

在前台啟動 Solr,並將 stdout / stderr 傳送到 solr-PORT-console.log。當使用 -e 選項執行範例時,您無法使用此選項。

範例bin/solr start -f

--host <hostname>

選用

預設值:localhost

指定此 Solr 實例的主機名稱。如果未指定,則會假定為 localhost

範例bin/solr start --host search.mysolr.com

-m <memory>

選用

預設值:512m

設定執行 Solr 的 JVM 的最小 (-Xms) 和最大 (-Xmx) 堆積大小。

範例bin/solr start -m 4g 會產生 -Xms4g -Xmx4g 設定。

--no-prompt

選用

預設值:無

不要提示輸入;當執行接受使用者輸入的範例時,接受所有預設值。

例如,當使用「cloud」範例時,互動式會話會引導您完成 SolrCloud 叢集的幾個選項。如果您想要接受所有預設值,您可以將 --no-prompt 選項新增到您的要求。

範例bin/solr start -e cloud --no-prompt

-p <port>

選用

預設值:8983

指定要在其上啟動 Solr HTTP 接聽程式的連接埠;Solr 的傳統預設連接埠為 8983。指定的連接埠 (SOLR_PORT) 也將用於判斷停止連接埠。停止連接埠定義為 STOP_PORT=($SOLR_PORT-1000),而 JMX RMI 接聽連接埠定義為 RMI_PORT=($SOLR_PORT+10000)。例如,如果您設定 -p 8985,則 STOP_PORT=7985,而 RMI_PORT=18985。如果未指定,則會使用 8983

範例bin/solr start -p 8655

-s <dir>

選用

預設值:server/solr

設定 solr.solr.home 系統屬性。Solr 將在此目錄下建立核心目錄。這可讓您在同一主機上執行多個 Solr 實例,同時重複使用使用 -d 參數設定的相同伺服器目錄。如果設定,指定的目錄應包含 solr.xml 檔案,除非 Zookeeper 中已存在 solr.xml。

執行範例 (-e) 時會忽略此參數,因為 solr.solr.home 取決於執行的範例。

預設值為 server/solr。如果傳遞相對目錄,則會在嘗試預設 server/<dir> 之前,先使用目前目錄進行驗證。

範例bin/solr start -s newHome

-t <dir>--data-home <dir>

選用

預設值:solr.solr.home

設定 solr.data.home 系統屬性,Solr 將在 <instance_dir>/data 子目錄中儲存索引資料。如果未設定,Solr 會將 solr.solr.home 用於組態和資料。

-v

選用

預設值:無

更詳細。這會將 Solr 中 Log4j 的記錄層級從 INFO 變更為 DEBUG,其效果與您編輯 log4j2.xml 相同。

範例bin/solr start -f -v

-q

選用

預設值:無

更安靜。這會將 Solr 中 Log4j 的記錄層級從 INFO 變更為 WARN,其效果與您編輯 log4j2.xml 相同。這在您想要將記錄限制為警告和錯誤的生產環境中很有用。

範例bin/solr start -f -q

-V--verbose

選用

預設值:無

來自此指令碼的詳細訊息。

範例bin/solr start -V

-z <zkHost>--zk-host <zkHost>

選用

預設值:請參閱說明

Zookeeper 連線字串,此選項僅與 -c 選項一起使用,以在 SolrCloud 模式下啟動 Solr。如果未在 solr.in.sh/solr.in.cmd 中指定 ZK_HOST,並且未提供此選項,Solr 將啟動嵌入式 ZooKeeper 實例,並將該實例用於 SolrCloud 作業。

如果您的 ZK 主機具有 chroot 路徑,且您想要自動建立它,請將 ZK_CREATE_CHROOT 環境變數設定為 true。

範例bin/solr start -c -z server1:2181,server2:2181

--force

選用

預設值:無

如果嘗試以 root 使用者身分啟動 Solr,指令碼將會退出並發出警告,指出以「root」身分執行 Solr 可能會導致問題。可以使用 --force 參數覆寫此警告。

範例sudo bin/solr start --force

為了強調預設設定的運作方式,請花點時間瞭解以下命令是等效的

bin/solr start

bin/solr start -h localhost -p 8983 -d server -s solr -m 512m

如果預設值符合您的需求,則在啟動時不需要定義所有選項。

設定 Java 系統屬性

bin/solr 指令碼會將任何以 -D 開頭的額外參數傳遞給 JVM,這可讓您設定任意 Java 系統屬性。

例如,若要將自動軟提交頻率設定為 3 秒,您可以執行

bin/solr start -Dsolr.autoSoftCommit.maxTime=3000

Solr 也會將任何格式為 SOLR_FOO_BAR 的環境變數轉換為系統屬性 solr.foo.bar,使其能夠透過環境注入大多數屬性,例如

SOLR_LOG_LEVEL=debug bin/solr start

SOLR_OPTS 環境變數也可用於設定 Solr 的其他系統屬性。

為了在執行 start 以外的任何 Solr 公用程式(例如 stopcreateauthstatusapi)時設定自訂系統屬性,應該使用 SOLR_TOOL_OPTS 環境變數。

SolrCloud 模式

-c--cloud 選項是等效的

bin/solr start -c

bin/solr start --cloud

如果您指定 ZooKeeper 連線字串,例如 -z 192.168.1.4:2181,則 Solr 將會連線到 ZooKeeper 並加入叢集。

如果您已在 solr.in.sh/solr.in.cmd 中定義 ZK_HOST(請參閱 更新 Solr 包含檔案),則可以從所有 bin/solr 命令中省略 -z <zk 主機字串>

當在 SolrCloud 模式下啟動 Solr 時,如果您未在 solr.in.sh/solr.in.cmd 中定義 ZK_HOST,也未指定 -z 選項,則 Solr 將會啟動一個接聽 Solr 連接埠 + 1000 的嵌入式 ZooKeeper 伺服器。例如,如果 Solr 在連接埠 8983 上執行,則嵌入式 ZooKeeper 將會接聽連接埠 9983。

如果您的 ZooKeeper 連線字串使用 chroot,例如 localhost:2181/solr,則您需要在使用 bin/solr 指令碼啟動 SolrCloud 之前建立 /solr znode。

若要執行此操作,請使用以下概述的 mkroot 命令,例如:bin/solr zk mkroot /solr -z 192.168.1.4:2181

當在 SolrCloud 模式下啟動時,互動式指令碼會話將提示您選擇要使用的 configset。

有關在 SolrCloud 模式下啟動 Solr 的更多資訊,另請參閱 SolrCloud 入門 章節。

使用範例組態執行

bin/solr start -e <name>

範例組態可讓您快速開始使用與您希望使用 Solr 完成的目標相似的組態。

每個範例都會啟動具有受管理綱要的 Solr,這可讓您使用 綱要 API 進行綱要編輯,但不允許手動編輯綱要檔案。

如果您希望直接手動修改 schema.xml 檔案,您可以變更此預設值,如 綱要 Factory 組態 章節中所述。

除非以下說明中另有說明,否則範例不會啟用 SolrCloud 或 無綱要模式

提供以下範例

  • cloud:此範例會在單一機器上啟動一個 1-4 節點 SolrCloud 叢集。選擇後,將會啟動一個互動式會話來引導您完成選項,以選取要使用的初始 configset、範例叢集的節點數、要使用的連接埠,以及要建立的集合名稱。

    使用此範例時,您可以從 $SOLR_TIP/server/solr/configsets 中找到的任何可用 configset 中選擇。

  • techproducts:此範例會啟動單節點 Solr 實例,其綱要專為 $SOLR_HOME/example/exampledocs 目錄中包含的範例文件而設計。

    使用的 configset 可以在 $SOLR_TIP/server/solr/configsets/sample_techproducts_configs 中找到。

    使用的資料可以在 $SOLR_HOME/example/exampledocs/ 中找到。

  • schemaless:此範例使用受管理的架構啟動單節點 Solr 實例,如 架構工廠配置 章節所述,並提供非常精簡的預定義架構。Solr 將在此配置下以無架構模式 執行,其中 Solr 會即時在架構中建立欄位,並猜測傳入文件中使用的欄位類型。

    使用的 configset 可以在 $SOLR_TIP/server/solr/configsets/_default 中找到。

  • films:此範例使用受管理的架構啟動單節點 Solr 實例,如 架構工廠配置 章節所述,然後使用 Schema API 建立一些自訂欄位。Solr 將在此配置下以 無架構模式 執行,其中 Solr 會即時在架構中建立欄位,並猜測傳入文件中使用的欄位類型。然後載入一些範例電影資料。

    使用的 configset 可以在 $SOLR_TIP/server/solr/configsets/_default 中找到。

    使用的電影資料可以在 $SOLR_HOME/example/films/films.json 中找到。

前台執行選項 (-f) 與 -e 選項不相容,因為指令碼需要在啟動 Solr 伺服器後執行其他工作。

停止

stop 命令會向執行中的 Solr 節點傳送 STOP 請求,使其能夠正常關閉。該命令將等待最多 180 秒,讓 Solr 正常停止,然後強制終止該程序 (kill -9)。

bin/solr stop [選項]

bin/solr stop --help

停止參數

-p <port>

選用

預設值:無

停止在指定埠上執行的 Solr。如果您執行多個實例,或以 SolrCloud 模式執行,則您需要指定個別請求中的埠,或使用 --all 選項。

範例bin/solr stop -p 8983

--all

選用

預設值:無

在此主機上尋找並停止所有具有有效 PID 的執行中 Solr 伺服器。

範例bin/solr stop --all

-k <key>

選用

預設值:無

用於防止意外停止 Solr 的停止金鑰;預設為 "solrrocks"。

範例bin/solr stop -k solrrocks

-V--verbose

選用

預設值:無

使用此指令碼的詳細訊息停止 Solr。

範例bin/solr stop -V

系統資訊

版本

version 命令只會傳回目前安裝的 Solr 版本,並立即結束。

$ bin/solr version
X.Y.0

狀態

status 命令會顯示所有在本機執行的 Solr 伺服器的基本 JSON 格式狀態資訊。

status 命令會使用 SOLR_PID_DIR 環境變數來尋找 Solr 程序 ID 檔案,以尋找執行中的 Solr 實例,預設為 bin 目錄。

bin/solr status

輸出將包含叢集中每個節點的狀態,如本範例所示

Found 2 Solr nodes:

Solr process 39920 running on port 7574
{
  "solr_home":"/Applications/Solr/example/cloud/node2/solr/",
  "version":"X.Y.0",
  "startTime":"2015-02-10T17:19:54.739Z",
  "uptime":"1 days, 23 hours, 55 minutes, 48 seconds",
  "memory":"77.2 MB (%15.7) of 490.7 MB",
  "cloud":{
    "ZooKeeper":"localhost:9865",
    "liveNodes":"2",
    "collections":"2"}}

Solr process 39827 running on port 8865
{
  "solr_home":"/Applications/Solr/example/cloud/node1/solr/",
  "version":"X.Y.0",
  "startTime":"2015-02-10T17:19:49.057Z",
  "uptime":"1 days, 23 hours, 55 minutes, 54 seconds",
  "memory":"94.2 MB (%19.2) of 490.7 MB",
  "cloud":{
    "ZooKeeper":"localhost:9865",
    "liveNodes":"2",
    "collections":"2"}}

斷言

assert 命令會檢查 Solr 安裝中的常見問題。這包括檢查特定目錄的所有權/存在,並確保 Solr 可在預期的 URL 上使用。該命令可以輸出指定的錯誤訊息,或變更其結束代碼以指示錯誤。

例如

$ bin/solr assert --exists /opt/bin/solr

會產生以下輸出

ERROR: Directory /opt/bin/solr does not exist.

bin/solr assert 的基本用法是

$ bin/solr assert -h
usage: bin/solr assert [-m <message>] [-e] [-rR] [-s <url>] [-S <url>] [-c
                <url>] [-C <url>] [-u <dir>] [-x <dir>] [-X <dir>]
 -c,---cloud <url>             Asserts that Solr is running in cloud mode.
                               Also fails if Solr not running.  URL should
                               be for root Solr path.
 -C,--not-cloud <url>          Asserts that Solr is not running in cloud
                               mode.  Also fails if Solr not running.  URL
                               should be for root Solr path.
 -e,--exitcode                 Return an exit code instead of printing
                               error message on assert fail.
 -h,--help                     Print this message.
 -m,--message <message>        Exception message to be used in place of
                               the default error message.
 -R,--not-root                 Asserts that we are NOT the root user.
 -r,--root                     Asserts that we are the root user.
 -S,--not-started <url>        Asserts that Solr is NOT running on a
                               certain URL. Default timeout is 1000ms.
 -s,--started <url>            Asserts that Solr is running on a certain
                               URL. Default timeout is 1000ms.
 -t,--timeout <ms>             Timeout in ms for commands supporting a
                               timeout.
 -u,--same-user <directory>    Asserts that we run as same user that owns
                               <directory>.
 -v,--verbose                  Enable more verbose command output.
 -x,--exists <directory>       Asserts that directory <directory> exists.
 -X,--not-exists <directory>   Asserts that directory <directory> does NOT
                               exist.
 -u,--credentials <user:pass>  Username and password for Basic authentication.

健康檢查

當以 SolrCloud 模式執行時,healthcheck 命令會為集合產生 JSON 格式的健康報告。健康報告提供有關集合中所有分片之每個副本的狀態資訊,包括已提交的文件數量及其目前狀態。

bin/solr healthcheck [選項]

bin/solr healthcheck --help

健康檢查參數

-c <collection>

必要

預設值:無

要執行健康檢查的集合名稱。

範例bin/solr healthcheck -c gettingstarted

--solr-url <url>

選用

預設值:無

基本 Solr URL,可用於在 SolrCloud 模式中判斷 ZooKeeper 連線字串 (如果未知)。

-z <zkhost>--zk-host <zkhost>

選用

預設值:localhost:9983

ZooKeeper 連線字串。如果您在 8983 以外的埠上執行 Solr,則必須指定 ZooKeeper 連線字串。預設情況下,這將是 Solr 埠 + 1000。如果 SOLR_HOST 定義在 solr.in.shsolr.in.cmd 中,則此參數是不必要的。

範例bin/solr healthcheck -z localhost:2181

以下是使用非標準 ZooKeeper 連線字串的健康檢查請求和回應範例,其中執行了 2 個節點

$ bin/solr healthcheck -c gettingstarted -z localhost:9865

{
  "collection":"gettingstarted",
  "status":"healthy",
  "numDocs":0,
  "numShards":2,
  "shards":[
    {
      "shard":"shard1",
      "status":"healthy",
      "replicas":[
        {
          "name":"core_node1",
          "url":"http://10.0.1.10:8865/solr/gettingstarted_shard1_replica2/",
          "numDocs":0,
          "status":"active",
          "uptime":"2 days, 1 hours, 18 minutes, 48 seconds",
          "memory":"25.6 MB (%5.2) of 490.7 MB",
          "leader":true},
        {
          "name":"core_node4",
          "url":"http://10.0.1.10:7574/solr/gettingstarted_shard1_replica1/",
          "numDocs":0,
          "status":"active",
          "uptime":"2 days, 1 hours, 18 minutes, 42 seconds",
          "memory":"95.3 MB (%19.4) of 490.7 MB"}]},
    {
      "shard":"shard2",
      "status":"healthy",
      "replicas":[
        {
          "name":"core_node2",
          "url":"http://10.0.1.10:8865/solr/gettingstarted_shard2_replica2/",
          "numDocs":0,
          "status":"active",
          "uptime":"2 days, 1 hours, 18 minutes, 48 seconds",
          "memory":"25.8 MB (%5.3) of 490.7 MB"},
        {
          "name":"core_node3",
          "url":"http://10.0.1.10:7574/solr/gettingstarted_shard2_replica1/",
          "numDocs":0,
          "status":"active",
          "uptime":"2 days, 1 hours, 18 minutes, 42 seconds",
          "memory":"95.4 MB (%19.4) of 490.7 MB",
          "leader":true}]}]}

集合和核心

bin/solr 指令碼還可以協助您建立新的集合或核心,或刪除集合或核心。

建立核心或集合

create 命令會根據 Solr 是以獨立 (核心) 還是 SolrCloud 模式 (集合) 執行來建立核心或集合。換句話說,此動作會偵測 Solr 執行的模式,然後採取適當的動作 (create_corecreate_collection)。

bin/solr create [選項]

bin/solr create --help

建立核心或集合參數

-c <name>

必要

預設值:無

要建立的核心或集合名稱。

範例bin/solr create -c mycollection

-d <confdir>--conf-dir <confdir>

選用

預設值:_default

設定目錄。

請參閱以下 設定目錄和 SolrCloud 章節,以取得有關在 SolrCloud 模式下執行時,此選項的詳細資訊。

範例bin/solr create -d _default

-n <configName>

選用

預設值:請參閱說明

組態名稱。預設與核心或集合的名稱相同。

範例bin/solr create -n basic

-p <port>-port <port>

選用

預設值:請參閱說明

要將 create 命令傳送至的本機 Solr 實例的埠。預設情況下,指令碼會嘗試尋找執行中的 Solr 實例來偵測埠。

如果您在同一主機上執行多個 Solr 實例,因此需要明確指定要建立核心的實例,則此選項很有用。

範例bin/solr create -p 8983

-s <shards>-shards <shards>

選用

預設值:1

要將集合分割成的分片數量。僅適用於 Solr 以 SolrCloud 模式執行時。

範例bin/solr create -s 2

-rf <replicas>--replication-factor <replicas>

選用

預設值:1

集合中每個文件的複本數量。預設值為 1 (無複寫)。

範例bin/solr create -rf 2

--force

選用

預設值:無

如果嘗試以 "root" 使用者身分執行 create,指令碼將會退出,並發出警告:以 "root" 身分執行 Solr 或針對 Solr 執行的動作可能會導致問題。可以使用 --force 參數覆寫此警告。

範例bin/solr create -c foo --force

-z <zkHost>--zk-host <zkHost>

選用

預設值:localhost:9983

ZooKeeper 連線字串,可用於 SolrCloud 模式。如果 ZK_HOST 定義在 solr.in.shsolr.in.cmd 中,則不需要此選項。

--solr-url <url>

選用

預設值:https://127.0.0.1:8983

基本 Solr URL,可用於在 SolrCloud 模式中判斷 ZooKeeper 連線字串 (如果未知)。

bin/solr create_collection [選項]

bin/solr create_collection -help

建立集合參數

-c <name>

必要

預設值:無

要建立的集合名稱。

範例bin/solr create_collection -c mycollection

-d <confdir>

選用

預設值:_default

建立新集合時要複製的設定目錄。

請參閱以下 設定目錄和 SolrCloud 章節,以取得有關在 SolrCloud 模式下執行時,此選項的詳細資訊,包括一些內建的範例組態。

_default 也稱為 無架構模式

範例bin/solr create_collection -d _default

或者,您可以傳遞您自己的設定目錄的路徑,而不是使用內建的組態之一。

範例bin/solr create_collection -c mycoll -d /tmp/myconfig

預設情況下,指令碼會使用與集合 (-c) 選項相同的名稱,將指定的 confdir 目錄上傳到 Zookeeper。或者,如果您想要重複使用現有的目錄,或在 Zookeeper 中建立可由多個集合共用的 confdir,請使用 -n 選項

-n <configName>

選用

預設值:請參閱說明

在 Zookeeper 中命名組態目錄。預設情況下,組態將使用集合名稱 (-c) 上傳到 Zookeeper,但如果您想要使用現有的目錄,或覆寫 Zookeeper 中組態的名稱,則使用 -c 選項。嗯…我從 bin/solr create_collection -h 輸出複製了以上程式碼,但我不明白。而且 bin/solr create_collection -n basic -c mycoll 可以運作,它會建立 _default 的複本作為 "basic" configset…嗯?

範例bin/solr create_collection -n basic -c mycoll

-p <port>-port <port>

選用

預設值:請參閱說明

您想要在其中建立新集合的本機 Solr 實例埠。如果未指定,指令碼將會在本地系統中搜尋執行中的 Solr 實例,並將使用找到的第一個伺服器的埠。

如果您在同一主機上執行多個 Solr 實例,因此需要明確指定要建立核心的實例,則此選項很有用。

範例bin/solr create -p 8983

-s <shards>-shards <shards>

選用

預設值:1

要將集合分割成的分片數量。

範例bin/solr create_collection -s 2

-rf <replicas>-replicationFactor <replicas>

選用

預設值:1

集合中每個文件的複本數量。預設值為 1 (無複寫)。

範例bin/solr create_collection -rf 2

-force

選用

預設值:無

如果嘗試以 "root" 使用者身分執行 create,指令碼將會退出,並發出警告:以 "root" 身分執行 Solr 或針對 Solr 執行的動作可能會導致問題。可以使用 -force 參數覆寫此警告。

範例bin/solr create_collection -c foo -force

建立核心

create_core 命令會建立核心,且僅在以使用者管理 (單節點) 模式執行時可用。

bin/solr create_core [選項]

bin/solr create_core -help

建立核心參數

-c <name>

必要

預設值:無

要建立的核心名稱。

範例bin/solr create -c mycore

-d <confdir>

選用

預設值:_default

建立新核心時要使用的組態目錄。

範例bin/solr create -d _default

或者,您可以傳遞您自己的設定目錄的路徑,而不是使用內建的組態之一。

範例bin/solr create_collection -c mycore -d /tmp/myconfig

-p <port>-port <port>

選用

預設值:請參閱說明

要建立新核心的本機 Solr 實例的埠。預設情況下,指令碼會嘗試尋找執行中的 Solr 實例來偵測埠。

如果您在同一主機上執行多個 Solr 實例,因此需要明確指定要建立核心的實例,則此選項很有用。

範例bin/solr create -p 8983

-force

選用

預設值:無

如果嘗試以 "root" 使用者身分執行 create,指令碼將會退出,並發出警告:以 "root" 身分執行 Solr 或針對 Solr 執行的動作可能會導致問題。可以使用 -force 參數覆寫此警告。

範例bin/solr create -c foo -force

設定目錄和 SolrCloud

在 SolrCloud 中建立集合之前,必須將集合使用的設定目錄上傳到 ZooKeeper。createcreate_collection 命令支援集合和設定目錄如何運作的數種使用案例。您需要做出的主要決策是,ZooKeeper 中的設定目錄是否應在多個集合之間共用。

讓我們逐步了解幾個範例,以說明設定目錄如何在 SolrCloud 中運作。

首先,如果您未提供 -d-n 選項,則預設組態 ($SOLR_TIP/server/solr/configsets/_default/conf) 會使用與集合相同的名稱上傳到 ZooKeeper。

例如,以下命令將導致 _default 組態上傳到 ZooKeeper 中的 /configs/contactsbin/solr create -c contacts

如果您使用 bin/solr create -c contacts2 建立另一個集合,則 _default 目錄的另一個複本將上傳到 ZooKeeper 中的 /configs/contacts2 下。

您對 contacts 集合的組態所做的任何變更都不會影響 contacts2 集合。簡而言之,預設行為會為您建立的每個集合建立設定目錄的唯一複本。

您可以使用 -n 選項來覆寫在 ZooKeeper 中給定配置目錄的名稱。例如,指令 bin/solr create -c logs -d _default -n basic 會將 server/solr/configsets/_default/conf 目錄上傳到 ZooKeeper,並命名為 /configs/basic

請注意,我們使用了 -d 選項來指定與預設不同的配置。Solr 在 server/solr/configsets 下提供了幾個內建的配置。不過,您也可以使用 -d 選項來提供您自己的配置目錄路徑。例如,指令 bin/solr create -c mycoll -d /tmp/myconfigs 會將 /tmp/myconfigs 上傳到 ZooKeeper,並命名為 /configs/mycoll

再次重申,除非您使用 -n 選項覆寫,否則配置目錄會以集合的名稱命名。

其他集合可以透過使用 -n 選項指定共享配置的名稱來共享相同的配置。例如,以下指令會建立一個新的集合,該集合會共享先前建立的 basic 配置:bin/solr create -c logs2 -n basic

資料驅動的模式和共享配置

由於 _default 模式具有無模式功能(即,資料驅動的模式變更),因此可能會在索引資料時發生變化。因此,我們建議您不要在集合之間共享資料驅動的配置,除非您確定所有集合都應該繼承在將資料索引到其中一個集合時所做的變更。

您可以使用以下指令關閉集合的無模式功能,假設集合名稱為 mycollection

$ bin/solr config -c mycollection --action set-user-property --property update.autoCreateFields --value false

另請參閱 設定或取消設定配置屬性 一節。

刪除核心或集合

delete 指令會偵測 Solr 的執行模式,然後根據需要刪除指定的核心(使用者管理或單節點)或集合 (SolrCloud)。

bin/solr delete [選項]

bin/solr delete --help

如果您在 SolrCloud 模式中刪除集合,預設行為也會從 Zookeeper 中刪除配置目錄,前提是該目錄未被另一個集合使用。

例如,如果您使用 bin/solr create -c contacts 建立了一個集合,則刪除指令 bin/solr delete -c contacts 會檢查是否有任何其他集合正在使用 /configs/contacts 配置目錄。如果沒有,則會從 ZooKeeper 中移除 /configs/contacts 目錄。您可以在執行此指令時傳遞 -deleteConfig false 來覆寫此行為。

刪除核心或集合的參數

-c <name>

必要

預設值:無

要刪除的核心或集合的名稱。

範例bin/solr delete -c mycoll

--delete-config

選用

預設值:true

是否也應從 ZooKeeper 中刪除配置目錄。

如果配置目錄正被另一個集合使用,即使您將 --deleteConfig 傳遞為 true,也不會被刪除。

範例bin/solr delete --delete-config false

--force-delete-config

選用

預設值:請參閱說明

刪除集合使用的配置目錄時,跳過安全檢查。

-z <zkHost>--zk-host <zkHost>

如果您在同一主機上執行多個 Solr 執行個體,因此需要指定要從哪個執行個體刪除核心,則此選項很有用。

ZooKeeper 連線字串,可用於 SolrCloud 模式。如果 ZK_HOST 定義在 solr.in.shsolr.in.cmd 中,則不需要此選項。

-solr-url <url>

選用

預設值:https://127.0.0.1:8983

基本 Solr URL,可用於在 SolrCloud 模式中判斷 ZooKeeper 連線字串 (如果未知)。

-u <user:pass>--credentials <user:pass>

選用

預設值:無

基本驗證的使用者名稱和密碼,以 : 字元分隔。如果 SOLR_AUTH_TYPE 定義在 solr.in.shsolr.in.cmd 中,則此參數是不必要的。

驗證

bin/solr 指令碼允許啟用或停用驗證,讓您可以從命令列設定驗證。

目前,此指令僅在使用 SolrCloud 模式時可用,而且必須在託管 Solr 的機器上執行。

對於基本驗證,指令碼提供使用者角色和權限對應,並將建立的使用者對應到 superadmin 角色。對於 Kerberos,它只會啟用 security.json,而不會設定任何使用者或角色對應。

啟用基本驗證

指令 bin/solr auth enable 會設定 Solr 在存取使用者介面、使用 bin/solr 和任何 API 要求時使用基本驗證。

如需 Solr 驗證外掛程式的詳細資訊,請參閱 保護 Solr 安全 一節。如需基本驗證支援的詳細資訊,請參閱 基本驗證外掛程式 一節。

bin/solr auth enable 指令會進行幾個變更以啟用基本驗證

  • 取得基本 security.json 檔案,使用 auth 指令參數來演化它,並將新的檔案上傳到 ZooKeeper。

  • bin/solr.in.shbin\solr.in.cmd 中新增兩行,以設定驗證類型和 basicAuth.conf 的路徑

    # The following lines added by ./solr for enabling BasicAuth
    SOLR_AUTH_TYPE="basic"
    SOLR_AUTHENTICATION_OPTS="-Dsolr.httpclient.config=/path/to/solr-9.7.0/server/solr/basicAuth.conf"
  • 建立 server/solr/basicAuth.conf 檔案,以儲存與 bin/solr 指令一起使用的認證資訊。

以下是一些使用範例

Usage: solr auth enable [--type basicAuth] --credentials user:pass [--block-unknown <true|false>] [--update-include-file-only <true|false>] [-v]
       solr auth enable [--type basicAuth] --prompt <true|false> [--block-unknown <true|false>] [--update-include-file-only <true|false>] [-v]
       solr auth enable --type kerberos --config <kerberos configs> [--update-include-file-only <true|false>] [-v]
       solr auth disable [--update-include-file-only <true|false>] [-v]

此指令接受下列參數

-credentials <user:pass>

選用

預設值:無

初始使用者的使用者名稱和密碼,格式為 username:password。僅適用於 basicAuth。

如果您不想將使用者名稱和密碼作為指令碼的引數傳遞,您可以選擇 --prompt 選項。必須指定 --credentials--prompt 其中一個

--prompt <true|false>

選用

預設值:無

提示使用者提供認證。如果偏好提示,請傳遞 true 作為參數,要求指令碼提示使用者輸入使用者名稱和密碼。

必須指定 --credentials--prompt 其中一個

--block-unknown <true|false>

選用

預設值:true

當為 true 時,會阻止未驗證的使用者存取 Solr。當為 false 時,未驗證的使用者仍然可以存取 Solr,但僅適用於在授權外掛程式設定中沒有明確要求使用者角色的作業。

--solrIncludeFile <includeFilePath>

選用

預設值:無

指定環境中包含檔案的完整路徑。如果未指定,此指令碼會尋找名為 solr.in.sh 的包含檔案來設定環境變數。具體來說,會依此順序搜尋下列位置

  • <指令碼位置>/。

  • $HOME/.solr.in.sh

  • /usr/share/solr

  • /usr/local/share/solr

  • /etc/default

  • /var/solr

  • /opt/solr

--update-include-file-only <true|false>

選用

預設值:false

當為 true 時,只更新 bin/solr.in.shbin\solr.in.cmd,並跳過實際啟用/停用驗證(即,不更新 security.json)。

-z <zkHost>--zk-host <zkHost>

選用

預設值:無

定義 ZooKeeper 連線字串。如果您想在所有 Solr 節點啟動之前啟用驗證,則這很有用。如果 ZK_HOST 定義在 solr.in.shsolr.in.cmd 中,則不需要此設定。

-d <dir>

選用

預設值:$SOLR_TIP/server

定義 Solr 伺服器目錄,預設為 $SOLR_TIP/server。不需要覆寫預設值是很常見的,只有在您自訂 $SOLR_HOME 目錄路徑時才需要。

-s <dir>--solr-home <dir>

選用

預設值:server/solr

定義 solr.solr.home 的位置,預設為 server/solr。如果您在同一主機上有 Solr 的多個執行個體,或者您自訂了 $SOLR_HOME 目錄路徑,您可能需要定義此設定。這是放置任何認證或驗證設定檔(例如 basicAuth.conf)的位置。

停用基本驗證

您可以使用 bin/solr auth disable 來停用基本驗證。

如果 --update-include-file-only 選項設定為 true,則只會更新 bin/solr.in.shbin\solr.in.cmd 中的設定,而不會移除 security.json

如果 --update-include-file-only 選項設定為 false,則會更新 bin/solr.in.shbin\solr.in.cmd 中的設定,並且會移除 security.json。但是,無論使用哪個選項,都不會移除 basicAuth.conf 檔案。

設定或取消設定配置屬性

bin/solr 指令碼啟用組態 API 的子集:(取消)設定常見屬性(取消)設定使用者定義的屬性

bin/solr config [選項]

bin/solr config --help

設定或取消設定常見屬性

若要在集合 mycollection 上將常見屬性 updateHandler.autoCommit.maxDocs 設定為 100

bin/solr config -c mycollection --action set-property --property updateHandler.autoCommit.maxDocs --value 100

預設的 --actionset-property,因此可以省略不提及來縮短上述指令

bin/solr config -c mycollection --property updateHandler.autoCommit.maxDocs --value 100

若要取消設定先前設定的常見屬性,請指定 --action unset-property,且不帶 --value

bin/solr config -c mycollection --action unset-property --property updateHandler.autoCommit.maxDocs

設定或取消設定使用者定義的屬性

若要將使用者定義的屬性 update.autoCreateFields 設定為 false (以停用無模式模式)

bin/solr config -c mycollection --action set-user-property --property update.autoCreateFields --value false

若要取消設定先前設定的使用者定義屬性,請指定 --action unset-user-property,且不帶 --value

bin/solr config -c mycollection --action unset-user-property --property update.autoCreateFields

組態參數

-c <name>--name <name>

必要

預設值:無

要變更組態的核心或集合名稱。

--action <name>

選用

預設值:set-property

組態 API 動作,下列其中之一:set-propertyunset-propertyset-user-propertyunset-user-property

--property <name>

必要

預設值:無

要將動作套用到的組態 API 屬性名稱,例如:'updateHandler.autoSoftCommit.maxTime'。

--value <new-value>

選用

預設值:無

將屬性設定為此值;接受 JSON 物件和字串。

-z <zkHost>--zk-host <zkHost>

選用

預設值:localhost:9983

ZooKeeper 連線字串,可用於 SolrCloud 模式。如果 ZK_HOST 定義在 solr.in.shsolr.in.cmd 中,則不需要此選項。

-u <url> 或 --solr-url <url>`

選用

預設值:https://127.0.0.1:8983/solr

基本 Solr URL,可用於在 SolrCloud 模式中判斷 ZooKeeper 連線字串 (如果未知)。

ZooKeeper 作業

bin/solr 指令稿允許對 ZooKeeper 執行特定操作。這些操作僅適用於 SolrCloud 模式。

這些操作以子命令的形式提供,每個子命令都有自己的一組選項。

bin/solr zk [子命令] [選項]

bin/solr zk --help

bin/solr zk 的基本用法為

$ bin/solr zk -h
Usage: solr zk upconfig|downconfig -d <confdir> -n <configName> [-z zkHost] [-s solrUrl]
         solr zk cp [-r] <src> <dest> [-z zkHost] [-s solrUrl]
         solr zk rm [-r] <path> [-z zkHost] [-s solrUrl]
         solr zk mv <src> <dest> [-z zkHost] [-s solrUrl]
         solr zk ls [-r] <path> [-z zkHost] [-s solrUrl]
         solr zk mkroot <path> [-z zkHost] [-s solrUrl]
在發出這些命令之前,Solr 應至少啟動一次,以便使用 Solr 預期的 znodes 初始化 ZooKeeper。一旦 ZooKeeper 初始化完成,Solr 不需要在任何節點上執行即可使用這些命令。

上傳配置集合

使用 zk upconfig 命令將預先配置的配置集合或自定義的配置集合上傳到 ZooKeeper。

ZK 上傳參數

以下所有參數皆為必填。

-n <名稱>

必要

預設值:無

ZooKeeper 中配置集合的名稱。此命令會將配置集合上傳到 "configs" ZooKeeper 節點,並給予指定的名稱。

您可以在管理 UI 中透過「Cloud」畫面查看所有已上傳的配置集合。選擇「Cloud」→「Tree」→「configs」即可查看。

如果指定了預先存在的配置集合,則會在 ZooKeeper 中覆寫該集合。

範例: -n myconfig

-d <配置集合目錄>

必要

預設值:無

要上傳的配置集合的本機目錄。其下方應直接包含一個 conf 目錄,該目錄又包含 solrconfig.xml 等檔案。

如果僅提供名稱,將在 $SOLR_TIP/server/solr/configsets 中檢查此名稱。也可以提供絕對路徑。

範例:

  • -d configsets_下的目錄

  • -d /configset/source 的路徑

-z <zkHost>--zk-host <zkHost>

必要

預設值:無

ZooKeeper 連線字串。如果 solr.in.shsolr.in.cmd 中定義了 ZK_HOST,則不需要此參數。

範例: -z 123.321.23.43:2181

-url <網址>--solr-url <網址>

選用

預設值:https://127.0.0.1:8983

基本 Solr URL,可用於在 SolrCloud 模式中判斷 ZooKeeper 連線字串 (如果未知)。

以下是帶有所有參數的此命令範例

bin/solr zk upconfig -z 111.222.333.444:2181 -n mynewconfig -d /path/to/configset
變更配置時重新載入集合

此命令不會自動使變更生效!它僅將配置集合上傳到 ZooKeeper。您可以使用 Collection API 的 RELOAD 命令來重新載入使用此配置集合的任何集合。

下載配置集合

使用 zk downconfig 命令將配置集合從 ZooKeeper 下載到本機檔案系統。

ZK 下載參數

以下列出的所有參數皆為必填。

-n <名稱>

必要

預設值:無

要從 ZooKeeper 下載的配置集合名稱。「管理 UI」的「Cloud」→「Tree」→「configs」節點會列出所有可用的配置集合。

範例: -n myconfig

-d <配置集合目錄>

必要

預設值:無

要將下載的配置集合寫入的路徑。如果僅提供名稱,則 $SOLR_TIP/server/solr/configsets 將會是父目錄。也可以提供絕對路徑。

無論在哪種情況下,目的地上預先存在的配置都將被覆寫

範例:

  • -d configsets_下的目錄

  • -d /configset/destination 的路徑

-z <zkHost>--zk-host <zkHost>

必要

預設值:無

ZooKeeper 連線字串。如果 solr.in.shsolr.in.cmd 中定義了 ZK_HOST,則不需要此參數。

範例: -z 123.321.23.43:2181

-url <網址>--solr-url <網址>

選用

預設值:https://127.0.0.1:8983

基本 Solr URL,可用於在 SolrCloud 模式中判斷 ZooKeeper 連線字串 (如果未知)。

以下是帶有所有參數的此命令範例

bin/solr zk downconfig -z 111.222.333.444:2181 -n mynewconfig -d /path/to/configset

最佳做法是將您的配置集合以某種形式的版本控制儲存為記錄系統。在這種情況下,應很少使用 downconfig

在本機檔案和 ZooKeeper znodes 之間複製

使用 zk cp 命令在 ZooKeeper znodes 和您的本機磁碟機之間傳輸檔案和目錄。此命令會從本機磁碟機複製到 ZooKeeper、從 ZooKeeper 複製到本機磁碟機,或從 ZooKeeper 複製到 ZooKeeper。

ZK 複製參數

-r

選用

預設值:無

將 <src> 遞迴複製到 <dst>。如果 <src> 有子項目且未指定 -r,則命令將會失敗。

範例: -r

<src>

必要

預設值:無

要從中複製的檔案或路徑。如果以 zk: 為前綴,則假定來源是 ZooKeeper。如果沒有前綴或前綴為 file:,則假定來源是本機磁碟機。 <src><dest> 至少其中一個必須以 zk: 為前綴,否則命令將會失敗。

範例:

  • zk:/configs/myconfigs/solrconfig.xml

  • file:/Users/apache/configs/src

<dest>

必要

預設值:無

要複製到的檔案或路徑。如果以 zk: 為前綴,則假定來源是 ZooKeeper。如果沒有前綴或前綴為 file:,則假定來源是本機磁碟機。

<src><dest> 至少其中一個必須以 zk: 為前綴,否則命令將會失敗。如果 <dest> 以斜線字元結尾,則表示目錄。

範例:

  • zk:/configs/myconfigs/solrconfig.xml

  • file:/Users/apache/configs/src

-z <zkHost>--zk-host <zkHost>

必要

預設值:無

ZooKeeper 連線字串。如果 solr.in.shsolr.in.cmd 中定義了 ZK_HOST,則此參數為選用。

範例: -z 123.321.23.43:2181

-url <網址>--solr-url <網址>

選用

預設值:https://127.0.0.1:8983

基本 Solr URL,可用於在 SolrCloud 模式中判斷 ZooKeeper 連線字串 (如果未知)。

<src> 是 zk 資源時,<dest> 可以是 '.'。如果 <dest> 以 '/' 結尾,則 <dest> 將會是本機資料夾或父 znode,並且將附加 <src> 路徑的最後一個元素,除非 <src> 也以斜線結尾。<dest> 可以是 zk:,這在以 cp -r 形式備份/還原整個 zk 狀態時可能很有用。您必須將以萬用字元結尾的本機路徑括在引號中,或僅以斜線結尾。也就是說,bin/solr zk cp -r /some/dir/ zk:/ -z localhost:2181 等效於 bin/solr zk cp -r "/some/dir/" zk:/ -z localhost:2181,但 bin/solr zk cp -r /some/dir/\ zk:/ -z localhost:2181 將會擲回錯誤。

以下是 ZK 配置備份/還原的範例

複製到本機: bin/solr zk cp -r zk:/ /some/dir -z localhost:2181

還原到 ZK: bin/solr zk cp -r /some/dir/ zk:/ -z localhost:2181

file: 前綴會被移除,因此 file:/wherever 指定絕對本機路徑,而 file:somewhere 指定相對本機路徑。Zookeeper 上的所有路徑都是絕對路徑。

Zookeeper 節點可以有資料,因此將單一檔案移動到父 znode 會將資料覆蓋在父 Znode 上,因此指定尾部的斜線可能很重要。

從本機複製時,支援尾部的萬用字元,且必須加上引號。

其他範例如下

從本機將目錄遞迴複製到 ZooKeeper: bin/solr zk cp -r file:/apache/confgs/whatever/conf zk:/configs/myconf -z 111.222.333.444:2181

將單一檔案從 ZooKeeper 複製到本機: bin/solr zk cp zk:/configs/myconf/managed_schema /configs/myconf/managed_schema -z 111.222.333.444:2181

從 ZooKeeper 移除 znode

使用 zk rm 命令從 ZooKeeper 移除 znode (以及選用的所有子節點)。

ZK 移除參數

-r

選用

預設值:無

如果 <path> 是目錄,則遞迴刪除。如果 <path> 有子項目且未指定 -r,則命令將會失敗。

範例: -r

<path>

必要

預設值:無

要從 ZooKeeper 移除的路徑,可以是父節點或葉節點。

安全檢查有限,您無法移除 //zookeeper 節點。

假定路徑為 ZooKeeper 節點,不需要 zk: 前綴。

範例:

  • /configs

  • /configs/myconfigset

  • /configs/myconfigset/solrconfig.xml

-z <zkHost>--zk-host <zkHost>

必要

預設值:無

ZooKeeper 連線字串。如果 solr.in.shsolr.in.cmd 中定義了 ZK_HOST,則此參數為選用。

範例: -z 123.321.23.43:2181

-url <網址>--solr-url <網址>

選用

預設值:https://127.0.0.1:8983

基本 Solr URL,可用於在 SolrCloud 模式中判斷 ZooKeeper 連線字串 (如果未知)。

以下是帶有參數的此命令範例

bin/solr zk rm -r /configs

bin/solr zk rm /configs/myconfigset/schema.xml

將一個 ZooKeeper znode 移動到另一個 (重新命名)

使用 zk mv 命令來移動 (重新命名) ZooKeeper znode。

ZK 移動參數

<src>

必要

預設值:無

要重新命名的 znode。假定使用 zk: 前綴。

範例: /configs/oldconfigset

<dest>

必要

預設值:無

znode 的新名稱。假定使用 zk: 前綴。

範例: /configs/newconfigset

-z <zkHost>--zk-host <zkHost>

必要

預設值:無

ZooKeeper 連線字串。如果 solr.in.shsolr.in.cmd 中定義了 ZK_HOST,則不需要此參數。

範例: -z 123.321.23.43:2181

以下是此命令的範例

bin/solr zk mv /configs/oldconfigset /configs/newconfigset

-url <網址>--solr-url <網址>

選用

預設值:https://127.0.0.1:8983

基本 Solr URL,可用於在 SolrCloud 模式中判斷 ZooKeeper 連線字串 (如果未知)。

列出 ZooKeeper znode 的子項目

使用 zk ls 命令查看 znode 的子項目。

ZK 列出參數

-r

選用

預設值:無

遞迴列出 znode 的所有子項目。只會列出節點名稱,而不會列出資料。

範例: -r

<path>

必要

預設值:無

要在 ZooKeeper 上列出的路徑。

範例: /collections/mycollection

-z <zkHost>--zk-host <zkHost>

必要

預設值:無

ZooKeeper 連線字串。如果 solr.in.shsolr.in.cmd 中定義了 ZK_HOST,則此參數為選用。

範例: -z 123.321.23.43:2181

-url <網址>--solr-url <網址>

選用

預設值:https://127.0.0.1:8983

基本 Solr URL,可用於在 SolrCloud 模式中判斷 ZooKeeper 連線字串 (如果未知)。

以下是帶有參數的此命令範例

bin/solr zk ls -r /collections/mycollection

bin/solr zk ls /collections -s https://127.0.0.1:8983

建立 znode (支援 chroot)

使用 zk mkroot 命令建立不含資料的 znode。此命令的主要用途是支援 ZooKeeper 的 "chroot" 概念。不過,它也可以用來建立任意路徑。

建立 znode 參數

<path>

必要

預設值:無

要在 ZooKeeper 上建立的路徑。如果需要,會建立中繼 znodes。如果不存在,則假定使用前導斜線。

範例: /solr

-z <zkHost>--zk-host <zkHost>

必要

預設值:無

ZooKeeper 連線字串。如果 solr.in.shsolr.in.cmd 中定義了 ZK_HOST,則此參數為選用。

範例: -z 123.321.23.43:2181

-url <網址>--solr-url <網址>

選用

預設值:https://127.0.0.1:8983

基本 Solr URL,可用於在 SolrCloud 模式中判斷 ZooKeeper 連線字串 (如果未知)。

以下是此命令的範例

bin/solr zk mkroot /solr -z 123.321.23.43:2181

bin/solr zk mkroot /solr/production

匯出與匯入

將文件匯出到檔案

export 命令允許您以 JSON、帶有行的 JSON 或 Javabin 格式匯出集合中的文件。可以匯出所有文件,或僅匯出符合查詢的文件。

尚未針對巢狀子文件測試過此功能,您的結果可能會有所不同。
export 命令僅適用於在雲端模式下執行的 Solr。

bin/solr export [選項]

bin/solr export --help

bin/solr export 命令採用下列參數

--url <網址>

必要

預設值:無

集合的完整位址。

--format <格式>

選用

預設值: json

匯出的檔案格式,jsonjsonljavabin。選擇 javabin 會以原生 Solr 格式匯出,且緊湊而匯入快速。jsonl 是帶有行的 Json 格式,詳情請參閱 https://jsonlines.org/

--out <路徑>

選用

預設值:請參閱說明

要將匯出的資料寫入的目錄路徑,或是要寫出的特定檔案。

如果僅指定目錄,則將會以集合的名稱建立檔案,如 <collection>.json

--compress

選用

預設值: false

如果您指定 --compress,則產生的輸出檔案將會進行 gzip 壓縮,例如 <collection>.json.gz

--query <查詢字串>

選用

預設值: *:*

自訂查詢。預設值為 *:*,這會匯出所有文件。

--fields <欄位>

選用

預設值:無

要匯出的欄位,以逗號分隔。預設會擷取所有欄位。

--limit <文件數量>

選用

預設值: 100

要下載的最大文件數。值 -1 將會匯出所有文件。

範例

從集合 gettingstarted 匯出所有文件

bin/solr export --url https://127.0.0.1:8983/solr/gettingstarted --limit -1

以壓縮 JSON 檔案的形式,將集合 gettingstarted 的所有文件匯出到名為 1MDocs.json.gz 的檔案中

bin/solr export --url https://127.0.0.1:8983/solr/gettingstarted --limit -1 --format json --compress --out 1MDocs

將文件匯入集合

將文件匯出到檔案後,您可以使用 /update 要求處理常式將其匯入新的 Solr 集合。

範例:匯入 json 檔案

首先匯出文件,請務必忽略任何透過 copyField 填充的欄位,並指定您想要匯出的欄位。

$ bin/solr export --url https://127.0.0.1:8983/solr/gettingstarted --fields id,name,manu,cat,features

建立一個新的集合以匯入匯出的文件。

$ bin/solr create_collection -c test_collection -n techproducts

現在使用以下其中一種方法匯入資料。

$ curl -X POST -d @gettingstarted.json 'https://127.0.0.1:8983/solr/test_collection/update/json/docs?commit=true'

$ curl -H 'Content-Type: application/json' -X POST -d @gettingstarted.json 'https://127.0.0.1:8983/solr/test_collection/update?commit=true'

範例:匯入 javabin 檔案

$ bin/solr export --url https://127.0.0.1:8983/solr/gettingstarted --format javabin --fields id,name,manu,cat,features
$ curl -X POST --header "Content-Type: application/javabin" --data-binary @gettingstarted.javabin 'https://127.0.0.1:8983/solr/test_collection/update?commit=true'

與 API 互動

api 命令可讓您將任意 HTTP 請求傳送到 Solr API 端點。

bin/solr api --help

bin/solr api 命令接受以下參數:

-url <網址>--solr-url <網址>

必要

預設值:無

向 Solr API 端點傳送 GET 請求。

API

api 命令可讓您將任意 HTTP 請求傳送到 Solr API 端點。如果您已為 Solr 配置 basicAuth 或 TLS,您可能會覺得這個方法比使用 curl 等其他工具更容易。

$ bin/solr api --solr-url https://127.0.0.1:8983/solr/techproducts/select?q=*:* -u user:password

這是一個向 techproducts /sql 端點傳送 SQL 查詢的範例(假設您已啟用 SQL 模組並在 Cloud 模式下啟動 Solr)。

$ bin/solr api --solr-url https://127.0.0.1:8983/solr/techproducts/sql?stmt=select+id+from+techproducts+limit+10

結果會串流到終端機。