Solr 控制腳本參考
Solr 包含一個名為 "bin/solr" 的腳本,可讓您在 Solr 安裝或叢集上執行許多常見操作。
您可以啟動和停止 Solr、建立和刪除集合或核心、對 ZooKeeper 執行操作,以及檢查 Solr 和已設定分片的狀態。
您可以在 Solr 安裝的 bin/
目錄中找到該腳本。bin/solr
腳本透過提供簡單的命令和選項來快速完成常見目標,使 Solr 更容易使用。
本指南中提供了更多 bin/solr
的使用範例,特別是在 啟動 Solr 和 SolrCloud 入門 章節。
啟動和停止
啟動和重新啟動
start
命令會啟動 Solr。restart
命令可讓您在 Solr 已在執行中或已停止時重新啟動 Solr。
start
和 restart
命令有多個選項,可讓您在 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 公用程式(例如 stop
、create
、auth
、status
、api
)時設定自訂系統屬性,應該使用 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,例如 若要執行此操作,請使用以下概述的 |
當在 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
中找到。
前台執行選項 ( |
停止
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
系統資訊
狀態
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.sh
或solr.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_core
或 create_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.sh
或solr.in.cmd
中,則不需要此選項。 --solr-url <url>
-
選用
基本 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。create
和 create_collection
命令支援集合和設定目錄如何運作的數種使用案例。您需要做出的主要決策是,ZooKeeper 中的設定目錄是否應在多個集合之間共用。
讓我們逐步了解幾個範例,以說明設定目錄如何在 SolrCloud 中運作。
首先,如果您未提供 -d
或 -n
選項,則預設組態 ($SOLR_TIP/server/solr/configsets/_default/conf
) 會使用與集合相同的名稱上傳到 ZooKeeper。
例如,以下命令將導致 _default
組態上傳到 ZooKeeper 中的 /configs/contacts
:bin/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.sh
或solr.in.cmd
中,則不需要此選項。 -solr-url <url>
-
選用
基本 Solr URL,可用於在 SolrCloud 模式中判斷 ZooKeeper 連線字串 (如果未知)。
-u <user:pass>
或--credentials <user:pass>
-
選用
預設值:無
基本驗證的使用者名稱和密碼,以
:
字元分隔。如果SOLR_AUTH_TYPE
定義在solr.in.sh
或solr.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.sh
或bin\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.sh
或bin\solr.in.cmd
,並跳過實際啟用/停用驗證(即,不更新security.json
)。 -z <zkHost>
或--zk-host <zkHost>
-
選用
預設值:無
定義 ZooKeeper 連線字串。如果您想在所有 Solr 節點啟動之前啟用驗證,則這很有用。如果
ZK_HOST
定義在solr.in.sh
或solr.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
指令碼啟用組態 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
預設的 --action
是 set-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-property
、unset-property
、set-user-property
、unset-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.sh
或solr.in.cmd
中,則不需要此選項。 -u <url>
或 --solr-url <url>`-
選用
基本 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.sh
或solr.in.cmd
中定義了ZK_HOST
,則不需要此參數。範例:
-z 123.321.23.43:2181
-url <網址>
或--solr-url <網址>
-
選用
基本 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.sh
或solr.in.cmd
中定義了ZK_HOST
,則不需要此參數。範例:
-z 123.321.23.43:2181
-url <網址>
或--solr-url <網址>
-
選用
基本 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.sh
或solr.in.cmd
中定義了ZK_HOST
,則此參數為選用。範例:
-z 123.321.23.43:2181
-url <網址>
或--solr-url <網址>
-
選用
基本 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.sh
或solr.in.cmd
中定義了ZK_HOST
,則此參數為選用。範例:
-z 123.321.23.43:2181
-url <網址>
或--solr-url <網址>
-
選用
基本 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.sh
或solr.in.cmd
中定義了ZK_HOST
,則不需要此參數。範例:
-z 123.321.23.43:2181
以下是此命令的範例
bin/solr zk mv /configs/oldconfigset /configs/newconfigset
-url <網址>
或--solr-url <網址>
-
選用
基本 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.sh
或solr.in.cmd
中定義了ZK_HOST
,則此參數為選用。範例:
-z 123.321.23.43:2181
-url <網址>
或--solr-url <網址>
-
選用
基本 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.sh
或solr.in.cmd
中定義了ZK_HOST
,則此參數為選用。範例:
-z 123.321.23.43:2181
-url <網址>
或--solr-url <網址>
-
選用
基本 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 <網址>
-
必要
預設值:無
集合的完整位址。
範例:
--url https://127.0.0.1:8983/solr/techproducts
--format <格式>
-
選用
預設值:
json
匯出的檔案格式,
json
、jsonl
或javabin
。選擇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 --solr-url https://127.0.0.1:8983/solr/COLL_NAME/sql?stmt=select+id+from+COLL_NAME+limit+10
bin/solr api --help
bin/solr api
命令接受以下參數:
-url <網址>
或--solr-url <網址>
-
必要
預設值:無
向 Solr API 端點傳送 GET 請求。
範例:
bin/solr api --solr-url https://127.0.0.1:8983/solr/COLL_NAME/sql?stmt=select+id+from+COLL_NAME+limit+10
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
結果會串流到終端機。