Solr 控制脚本参考

Solr 包含一个名为 “bin/solr” 的脚本,允许你对 Solr 安装或集群执行许多常见操作。

你可以启动和停止 Solr,创建和删除集合或核心,对 ZooKeeper 执行操作,并检查 Solr 和已配置分片的状态。

你可以在 Solr 安装的 bin/ 目录中找到该脚本。 bin/solr 脚本通过提供简单的命令和选项来快速完成常见目标,从而使 Solr 更易于使用。

在本指南中,特别是在启动 SolrSolrCloud 入门部分中,提供了更多 bin/solr 使用示例。

启动和停止

启动和重启

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 参数(例如以 -X 开头的参数)启动 Solr。 例如,要设置 Java 调试器以附加到 Solr JVM,你可以传递:-a "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=18983"。 在大多数情况下,你应该将其他参数用双引号括起来。

如果你传递的 JVM 参数以 -D 开头,则可以省略 -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 <名称>

可选

默认值:无

使用示例配置启动 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 <主机名>

可选

默认值:localhost

指定此 Solr 实例的主机名。如果未指定,则假定为 localhost

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

-m <内存>

可选

默认值: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 <端口>

可选

默认值: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 <目录>

可选

默认值:server/solr

设置 solr.solr.home 系统属性。Solr 将在此目录下创建核心目录。这允许您在同一主机上运行多个 Solr 实例,同时重用使用 -d 参数设置的相同服务器目录。如果设置,则指定的目录应包含 solr.xml 文件,除非 solr.xml 存在于 Zookeeper 中。

运行示例 (-e) 时,将忽略此参数,因为 solr.solr.home 取决于运行哪个示例。

默认值为 server/solr。如果传递相对目录,则在尝试默认值 server/<dir> 之前,将使用当前目录进行验证。

示例bin/solr start -s newHome

-t <目录>--data-home <目录>

可选

默认值: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 <名称>

示例配置允许您使用与您希望使用 Solr 完成的目标相符的配置快速入门。

每个示例都使用托管模式启动 Solr,该模式允许使用 Schema API 进行模式编辑,但不允许手动编辑模式文件。

如果您更喜欢直接手动修改 schema.xml 文件,则可以按照模式工厂配置部分中的描述更改此默认设置。

除非在下面的描述中另有说明,否则示例不会启用 SolrCloud 或 无模式模式

提供以下示例

  • cloud:此示例在单台机器上启动一个 1-4 节点的 SolrCloud 集群。选择后,将启动交互式会话,以指导您完成选择要使用的初始 configset、示例集群的节点数、要使用的端口以及要创建的集合的名称的选项。

    使用此示例时,您可以从 $SOLR_TIP/server/solr/configsets 中找到的任何可用 configset 中进行选择。

  • techproducts:此示例使用为 $SOLR_HOME/example/exampledocs 目录中包含的示例文档设计的模式启动单节点 Solr 实例。

    使用的 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 请求,这允许它正常关闭。该命令将等待 Solr 正常停止最多 180 秒,然后将强制终止该进程 (kill -9)。

bin/solr stop [选项]

bin/solr stop --help

停止参数

-p <端口>

可选

默认值:无

停止在给定端口上运行的 Solr。如果您正在运行多个实例,或者正在以 SolrCloud 模式运行,则需要在单独的请求中指定端口,或者使用 --all 选项。

示例bin/solr stop -p 8983

--all

可选

默认值:无

查找并停止此主机上所有具有有效 PID 的正在运行的 Solr 服务器。

示例: bin/solr stop --all

-k <密钥>

可选

默认值:无

停止密钥用于防止意外停止 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.

健康检查

healthcheck 命令在 SolrCloud 模式下运行时,会为集合生成 JSON 格式的健康报告。健康报告提供了集合中所有分片的每个副本的状态信息,包括已提交的文档数及其当前状态。

bin/solr healthcheck [选项]

bin/solr healthcheck --help

健康检查参数

-c <集合>

必需

默认值:无

要对其运行健康检查的集合的名称。

示例: 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。如果 ZK_HOSTsolr.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 <名称>

必需

默认值:无

要创建的核心或集合的名称。

示例: 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 <端口>

可选

默认值:请参阅描述

本地 Solr 实例的端口,用于将创建命令发送到该实例。默认情况下,该脚本会尝试通过查找正在运行的 Solr 实例来检测端口。

如果您在同一主机上运行多个 Solr 实例,则此选项很有用,因此您需要明确指定要在哪个实例中创建核心。

示例: bin/solr create -p 8983

-s <分片数>-shards <分片数>

可选

默认值: 1

将集合拆分为的分片数。仅当 Solr 在 SolrCloud 模式下运行时才适用。

示例: bin/solr create -s 2

-rf <副本数>--replication-factor <副本数>

可选

默认值: 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_HOSTsolr.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 <名称>

必需

默认值:无

要创建的集合的名称。

示例: 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

默认情况下,该脚本会将指定的 confdir 目录上传到 Zookeeper 中,并使用与集合 (-c) 选项相同的名称。或者,如果您想重用现有目录或在 Zookeeper 中创建一个可由多个集合共享的 confdir,请使用 -n 选项

-n <configName>

可选

默认值:请参阅描述

在 Zookeeper 中命名配置目录。默认情况下,配置将使用集合名称 (-c) 上传到 Zookeeper,但如果您想使用现有目录或覆盖 Zookeeper 中配置的名称,则使用 -c 选项。UMMMM…​ 我从 bin/solr create_collection -h 输出中复制了上面的行,但我没有理解它。并且 bin/solr create_collection -n basic -c mycoll 可以工作,它会创建 _default 的副本作为 “basic” 配置集… UMMM?

示例: bin/solr create_collection -n basic -c mycoll

-p <端口>-port <端口>

可选

默认值:请参阅描述

要创建新集合的本地 Solr 实例的端口。如果未指定,则该脚本将在本地系统中搜索正在运行的 Solr 实例,并将使用它找到的第一个服务器的端口。

如果您在同一主机上运行多个 Solr 实例,则此选项很有用,因此您需要明确指定要在哪个实例中创建核心。

示例: bin/solr create -p 8983

-s <分片数>-shards <分片数>

可选

默认值: 1

将集合拆分为的分片数。

示例: bin/solr create_collection -s 2

-rf <副本数>-replicationFactor <副本数>

可选

默认值: 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 <名称>

必需

默认值:无

要创建的核心的名称。

示例: bin/solr create -c mycore

-d <confdir>

可选

默认值: _default

创建新核心时要使用的配置目录。

示例: bin/solr create -d _default

或者,您可以传递您自己的配置目录的路径,而不是使用内置配置之一。

示例: bin/solr create_collection -c mycore -d /tmp/myconfig

-p <端口>-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 目录作为 /configs/basic 上传到 ZooKeeper。

请注意,我们使用了 -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 <名称>

必需

默认值:无

要删除的核心或集合的名称。

示例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_HOSTsolr.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_TYPEsolr.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_HOSTsolr.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_HOSTsolr.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 期望的 znode 初始化 ZooKeeper。初始化 ZooKeeper 后,Solr 不需要在任何节点上运行即可使用这些命令。

上传配置集

使用 zk upconfig 命令将预配置的配置集之一或自定义配置集上传到 ZooKeeper。

ZK 上传参数

以下所有参数都是必需的。

-n <name>

必需

默认值:无

ZooKeeper 中配置集的名称。此命令会将配置集上传到 "configs" ZooKeeper 节点,并赋予指定的名称。

您可以通过管理 UI 的云屏幕查看所有已上传的配置集。选择“云”→“树”→“configs”即可查看。

如果指定了预先存在的配置集,它将在 ZooKeeper 中被覆盖。

示例-n myconfig

-d <配置集目录>

必需

默认值:无

要上传的配置集的本地目录。它应该在其下方有一个 conf 目录,而 conf 目录又包含 solrconfig.xml 等文件。

如果只提供名称,将会在 $SOLR_TIP/server/solr/configsets 中检查此名称。也可以提供绝对路径。

示例:

  • -d configsets 下的目录

  • -d /配置集/源的路径

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

必需

默认值:无

ZooKeeper 连接字符串。如果在 solr.in.shsolr.in.cmd 中定义了 ZK_HOST,则不需要此参数。

示例-z 123.321.23.43:2181

-url <url>--solr-url <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 <name>

必需

默认值:无

要下载的 ZooKeeper 中配置集的名称。管理 UI 的“云”→“树”→“configs”节点列出了所有可用的配置集。

示例-n myconfig

-d <配置集目录>

必需

默认值:无

将下载的配置集写入的路径。如果只提供名称,则 $SOLR_TIP/server/solr/configsets 将是父目录。也可以提供绝对路径。

无论哪种情况,目标位置的现有配置都将被覆盖

示例:

  • -d configsets 下的目录

  • -d /配置集/目标的路径

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

必需

默认值:无

ZooKeeper 连接字符串。如果在 solr.in.shsolr.in.cmd 中定义了 ZK_HOST,则不需要此参数。

示例-z 123.321.23.43:2181

-url <url>--solr-url <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 znode 之间复制

使用 zk cp 命令在 ZooKeeper znode 和本地驱动器之间传输文件和目录。此命令将从本地驱动器复制到 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 <url>--solr-url <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

还原到 ZKbin/solr zk cp -r /some/dir/ zk:/ -z localhost:2181

file: 前缀被剥离,因此 file:/wherever 指定绝对本地路径,而 file:somewhere 指定相对本地路径。ZooKeeper 上的所有路径都是绝对路径。

ZooKeeper 节点可以包含数据,因此将单个文件移动到父 znode 将会覆盖父 znode 上的数据,因此指定尾部斜杠非常重要。

从本地复制时支持尾部通配符,并且必须用引号括起来。

其他示例是:

从本地递归复制目录到 ZooKeeperbin/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 <url>--solr-url <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 <url>--solr-url <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 <url>--solr-url <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 上创建的路径。如果需要,将创建中间 znode。如果不存在,则假定使用前导斜杠。

示例/solr

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

必需

默认值:无

ZooKeeper 连接字符串。如果在 solr.in.shsolr.in.cmd 中定义了 ZK_HOST,则可选。

示例-z 123.321.23.43:2181

-url <url>--solr-url <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 <url>

必需

默认值:无

集合的完全限定地址。

--format <格式>

可选

默认值:json

导出的文件格式,可以是 jsonjsonljavabin。选择 javabin 将以 Solr 本机格式导出,并且紧凑且导入速度快。 jsonl 是带有换行符的 Json 格式,请访问 https://jsonlines.org/ 了解更多信息。

--out <path>

可选

默认值:请参阅描述

要写入的导出数据的目录路径,或要写入的特定文件。

如果仅指定目录,则将使用集合的名称创建文件,例如 <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

将集合 gettingstarted 的所有文档导出到一个名为 1MDocs.json.gz 的压缩 JSON 文件中

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 <url>--solr-url <url>

必需

默认值:无

向 Solr API 端点发送 GET 请求。

API

api 命令允许您向 Solr API 端点发送任意 HTTP 请求。如果您已为 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 模块的云模式下启动了 Solr)。

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

结果将流式传输到终端。