更新时间:2024-11-29 GMT+08:00

Shell客户端操作命令

在使用Solr的Shell脚本前,需要安装Solr的客户端。

Solr配置集操作命令

操作

命令

参数说明

示例

在本地指定路径生成Solr的配置文件集

solrctl confset --generate path [_default | -confWithHBase | -confWithHDFS | -confWithDisk | -confWithSchema ]

  • generate为生成指定路径的配置集指令;
  • path为客户端本地的路径;
  • [_default | -confWithHBase | -confWithHDFS | -confWithDisk ] 为可选参数。_default参数表示指定生成的是_default模式的配置集;-confWithHBase参数表示指定生成的是支持HBase全文索引的配置集;-confWithHDFS参数表示指定生成的是支持索引数据存储在HDFS的配置集;-confWithDisk参数表示指定生成的是支持索引数据存储在本地磁盘的配置集;-confWithSchema参数表示指定生成的是支持根据“INDEX_STORED_ON_HDFS”参数值确定数据存储在HDFS还是本地磁盘的配置集。
    说明:
    • 使用root以外的用户执行时,该用户需对本地目录有对应的权限。
    • 若要修改“INDEX_STORED_ON_HDFS”参数,请在FusionInsight Manager界面选择“集群 > 服务 > Solr > 配置 > 全部配置”,搜索“INDEX_STORED_ON_HDFS”参数。

solrctl confset --generate /home/solrDir或者solrctl confset --generate /home/solrDir -schemaless或者solrctl confset --generate /home/solrDir -confWithHBase或者solrctl confset --generate /home/solrDir -confWithHDFS或者solrctl confset --generate /home/solrDir -confWithDisk或者solrctl confset --generate /home/solrDir _default

上传本地配置文件集给ZooKeeper,并指定其名称

solrctl confset --create name path -force

  • create为上传配置集文件指令;
  • name是上传给ZooKeeper的solr配置文件集名称;
  • path为客户端本地的路径;
  • -force为可选项,表示没有schema.xml和solrconfig.xml依旧可以上传配置文件集。

solrctl confset --create myconf /home/solrDir/

更新Solr配置文件集

solrctl confset --update name path -force

  • update为更新配置集文件指令;
  • name为需要更新的配置文件集名称;
  • path为客户端本地的路径;
  • -force为可选项,表示没有schema.xml和solrconfig.xml依旧可以更新配置文件集。

solrctl confset --update myconf /home/solrDir/

获取Solr的配置文件集,保存到客户端本地

solrctl confset --get name path

  • get为获取配置集文件指令;
  • name为需要获取的配置文件集名称;
  • path为客户端本地的路径。

solrctl confset --get myconf /home/solrTest/

上传文件到ZooKeeper上的指定路径

solrctl confset --putfile path localpath

  • putfile为上传文件指令;
  • path为上传到ZooKeeper上的路径;
  • localpath为本地的文件存储路径。

solrctl confset --putfile /configs/confWithSchema/test.xml /opt/test.xml

获取配置文件集中指定路径的文件保存到本地

solrctl confset --getfile path filename

  • getfile为获取文件指令;
  • path为文件存储ZooKeeper上的路径;
  • filename为该文件名称。

solrctl confset --getfile /configs/confWithSchema/schema.xml schema.xml

删除指定路径的文件

solrctl confset --clearfile path

  • clearfile为删除文件的指令;
  • path为该文件的路径。

solrctl confset --clearfile /configs/confWithSchema/test.xml

删除指定的配置文件集

solrctl confset --delete name

  • delete为删除指定配置文件集指令;
  • name为需要删除的配置文件集的名称。

solrctl confset --delete myconf

列出Solr配置文件集名称

solrctl confset --list

list为列出配置集文件名称指令。

solrctl confset --list

  • 当使用solrctl confset --get name path命令获取ZooKeeper上某个Solr配置集文件时,在指定的path下面会产生一个conf文件夹,conf目录下则为相应的配置文件(一般包括schema.xml和solrconfig.xml等)。
  • 当执行删除配置集命令时,需要根据界面提示输入“y”进行删除确认。

Collection操作命令

操作

命令

参数说明

示例

创建collection

solrctl collection --create name

[-s <numShards>]

[-a Create collection with autoAddReplicas=true]

[-S <true|false> Create collection true or false with sharedFsReplication]

[-b <true|false> Create collection true or false with autoShardBalance]

[-c <collection.configName>]

[-r <replicationFactor>]

[-m <maxShardsPerNode>]

[-n <createNodeSet>]

[-f <router.field>]

[-p name=value ...]

  • create为创建collection指令;
  • name为collection的名称;
  • -s numShards为collection中shard数目;
  • -a指定是否启用副本自动添加功能;
  • -S指定是否启用存储单副本模式,true表示使用,并且仅使用支持共享存储的节点,false表示仅使用本地存储;
  • -b指定是否启用shard分片自动均衡功能;
  • -c collection.configName为创建collection指定的配置文件,实际生产环境一定要使用自己新建的配置文件,模板配置文件在Solr服务重启后会被复原;
  • -r replicationFactor为创建collection时为每个分片指定的副本数,后续不因分片增加或减少副本而改变;
  • -m maxShardsPerNode为每个节点最大shard数;
  • -n createNodeSet指定了创建collection的所在节点;
  • -f router.field指定哈希的字段
  • -p 用于创建collection时扩展的键值对。

solrctl collection --create collectionTest -c myconf -s 3 -r 1 -m 1 -n solrIp1:port1_solr,solrIp2:port2_solr,solrIp3:port3_solr

修改collection

solrctl collection --modify name

[-a <true|false> Modify collection true or false with autoAddReplicas]

[-b <true|false> Modify collection true or false with autoShardBalance]

[-r <replicationFactor>] [-m <maxShardsPerNode>]

  • -a指定是否启用副本自动添加功能;
  • -b指定是否启用shard分片自动均衡功能;
  • -r为副本数;
  • -m为每个节点最大shard数。

solrctl collection --modify collectionTest -b true

删除collection

solrctl collection --delete name

  • delete为删除collection指令;
  • name为需要删除collection名称。

solrctl collection --delete collectionTest

重新加载某个collection

solrctl collection --reload name

  • reload为重新加载collection指令;
  • name为需要重新加载的某个collection的名称。

solrctl collection --reload collection1

对collection的某个shard进行分片

solrctl collection --splitshard collection shard

[-async <async task id>]

  • splitshard为对collection的某个shard进行分片操作的指令;
  • collection为需要分片的collection名称;
  • shard为需要分片的shard名称;
  • -async为执行异步任务的id。
说明:

async参数必须指定,任务将在服务端异步执行,通过requeststatus命令查询任务状态,每次任务需指定不同的async参数值。

solrctl collection --splitshard collection1 shard1 -async 1

对collection进行添加shard

solrctl collection --createshard collection shard

  • createshard为对collection进行添加shard操作的指令
  • collection为待添加shard的collection的名称;
  • shard为要添加的shard名称。
    说明:

    只有指定router.name=implicit的collection才可以添加shard。

solrctl collection --createshard collection1 shard1

对collection进行删除shard

solrctl collection --deleteshard collection shard

  • deleteshard为对collection进行删除shard操作的指令;
  • collection为待删除shard的collection的名称;
  • shard为要删除的shard名称。

solrctl collection --deleteshard collection1 shard1

对collection创建别名

solrctl collection --createalias aliasname collections

  • createalias为对collection创建别名操作的指令;
  • aliasname为collection的别名;
  • collections为要创建此别名的collections。

solrctl collection --createalias mycollection collections1

删除collections的别名

solrctl collection --deletealias aliasname

  • deletealias 为删除collections的别名操作的指令;
  • aliasname为collection的别名。

solrctl collection --deletealias mycollection

删除collections的replica

solrctl collection --deletereplica [-p name=value]…

  • deletereplica为删除collections的replica操作的指令;
  • -p为键值对。
    说明:

    需要指定replica所属的collection、shard以及要删除的replica名称。

solrctl collection --deletereplica -p collection=collection1 -p shard=shard1 -p replica=core_node2

添加collections的replica

solrctl collection --addreplica [-p name=value]…

  • addreplica为添加collections的replica操作的指令;
  • -p为键值对。
说明:

需要指定replica所属的collection、shard。

solrctl collection --addreplica -p collection=collection1 -p shard=shard1 -p node=192.168.0.22:21101_solr

删除collection下的索引数据

solrctl collection --deletedocs name

  • deletedocs为删除索引数据指令;
  • name为需要删除索引数据的collection名称。

solrctl collection --deletedocs collection1

列出所有的collection

solrctl collection --list

list为列出Collection指令。

solrctl collection --list

获取集群状态

solrctl collection --clusterstatus

clusterstatus为集群状态

solrctl collection --clusterstatus

获取overseer的状态和统计信息

solrctl collection --overseerstatus

overseerstatus为overseer的状态和统计信息

solrctl collection --overseerstatus

迁移源SolrServer实例上所有的Replica到目的SolrServer实例

solrctl collection --replacenode source_node target_node

[-async <async task id>]

[-p Replace node with parallel=true]

[-t <timeout in s>]

[-c Replace node with skipCheck=false]

[-sotimeout <socket timeout in ms>]

  • replacenode为迁移源SolrServer实例上所有的replica到目的SolrServer实例上。
  • source_node为要迁移的SolrServer实例。
  • target_node为迁移到目的SolrServer实例。
  • -async为执行异步任务的id。
    说明:

    async参数必须指定,任务将在服务端异步执行,通过requeststatus命令查询任务状态,每次任务需指定不同的async参数值。

  • -p可选参数;当指定该参数时,所有Replica将会并发迁移到目的SolrServer实例上;当源SolrServer实例上的replica持有大量的索引时,这会导致网络和磁盘I/O负载很高。
  • -t可选参数;指定实例迁移过程中,collection在目的实例创建成功后等待分片active的超时时间,单位为s,默认值为600s,即10min。该参数不可指定创建collection的超时时间,创建collection的超时时间默认为3min。
  • -c可选参数;当指定该参数时,Solr会检查,迁移后的目的SolrServer实例所在的主机上是否存在同一Collection的同一Shard有两个以上的Replica。
  • -sotimeout可选参数;指定实例迁移过程中,Solr服务端进行数据迁移的超时时间,单位ms,默认值为600000ms,即10min。

solrctl collection --replacenode 192.168.229.137:21101_solr 192.168.229.219:21104_solr

-async 2

查询异步任务的执行状态

solrctl collection --requeststatus requestid

requestid为查询异步任务的id。

说明:

查询结果中“msg”值为“found [requestid] in running tasks”时说明任务正在执行;

值为“found [requestid] in completed tasks”时说明任务已执行完成。

solrctl collection --requeststatus 1

  • 当schema.xml配置集文件配置错误时,可能会导致创建collection失败,并且会留有垃圾数据,需要手动清除每个实例下该Collection的索引数据存储路径下的垃圾数据,并清除zookeeper上“/solr/clusterstate.json”文件,然后重启Solr组件。建议配置schema.xml后,创建单个单片的collection进行验证是否配置正确。
  • 当Solr中索引数据存储HDFS时,可以通过修改“solrconfig.xml”中配置项:<int name="solr.hdfs.replication.number">${solr.hdfs.replication.number:3}</int>来设置索引数据在HDFS上的副本数,默认配置为3。同时可以修改“solrconfig.xml”中的配置项<int name="tlogDfsReplication">${solr.ulog.tlogDfsReplication:3}</int>来设置tlog的副本数,该参数默认值为3。
  • 当执行删除collection、shard、别名、replica、数据的命令时,需要根据界面提示输入“y”进行删除确认。

cluster操作命令

操作

命令

参数说明

示例

获取solr.xml文件

solrctl cluster --get-solrxml file

  • get-solrxml为获取solr.xml文件的指令
  • file为存储到本地的文件路径

solrctl cluster --get-solrxml /opt/client/solrtest.xml

上传solr.xml文件

solrctl cluster --put-solrxml file

  • put-solrxml为上传solr.xml文件的指令
  • file为本地的文件路径

solrctl cluster --put-solrxml /opt/client/solrtest.xml

设置clusterprops中属性

solrctl cluster --set-property name value

  • set-property为设置clusterprops中属性的指令
  • name为更新的属性名
  • value为更新的属性的值

solrctl cluster --set-property urlScheme http

移除clusterprops中指定属性

solrctl cluster --remove-property name

  • remove-property为移除clusterprops中指定属性的指令
  • name为要移除的属性名

solrctl cluster --remove-property urlScheme

显示不再提供服务的空闲节点实例列表

solrctl cluster --list-free-node

list-free-node为显示不再提供服务的空闲节点实例列表操作的指令

solrctl cluster --list-free-node

显示支持本地磁盘的活跃节点实例列表

solrctl cluster --list-local-disk-live-node

list-local-disk-live-node为显示支持本地磁盘的活跃节点实例列表的指令

solrctl cluster --list-local-disk-live-node

显示collection的state.json文件信息

solrctl cluster --get-coll-state或

solrctl cluster --get-coll-state collection

  • get-coll-state显示所有collection的state.json文件信息
  • get-coll-state collection显示某个collection的state.json文件信息

solrctl cluster --get-coll-state或

solrctl cluster --get-coll-state collection1

显示所有的solr实例信息

solrctl cluster --list-node

list-node显示所有的solr实例信息

solrctl cluster --list-node

显示所有在线solr实例信息

solrctl cluster --list-live-node

list-live-node显示所有在线solr实例信息

solrctl cluster --list-live-node

--list-free-node命令用于solr退服时,查询哪些节点可以进行安全的退服操作。

HBaseIndexer操作命令

操作

命令

参数说明

示例

查看当前建立的Indexers状态

hbase-indexer list-indexers

list-indexers为查看当前建立的Indexers状态。

hbase-indexer list-indexers

删除创建过的Indexers

hbase-indexer delete-indexer -n indexer_name

  • delete-indexer为删除创建过的Indexers;
  • indexer_name为删除的indexer名。

hbase-indexer delete-indexer -n userIndexer

创建Indexer

hbase-indexer add-indexer -n indexer_name -c path/index.xml -cp solr.collection=collection_name -cp solr.zk=hostips:zkport/solr

  • add-indexer为创建一个新的Indexer;
  • indexer_name为创建的indexer名;
  • path/index.xml为配置solr索引与hbase列表映射关系的配置文件的绝对路径;
  • solr.collection为indexer对应的collection名;
  • solr.zk为solr在ZooKeeper中的路径。

hbase-indexer add-indexer -n userIndexer -c /opt/client/Solr/hbase-indexer/conf/hbase-demo-indexer.xml -cp solr.collection=collection1 -cp solr.zk=192.168.1.1:2181,192.168.1.2:2181,192.168.1.3:2181/solr

创建索引任务

hbase-indexer batch-indexer --hbase-indexer-zk hostip:zkport --hbase-indexer-name indexer_name --out-put-dir hdfs_url --go-live --overwrite-output-dir --verbose --reducers number --zk-host hostip:zkport/solr --rowkey-dir hdfs_url --hbase-indexer-file configfilepath

  • batch-indexer为创建索引任务;
  • --hbase-indexer-zk为ZooKeeper信息;
  • --hbase-indexer-name为存在的indexer名;
  • --output-dir为可选项,MapReduce任务的输出目录;
  • --go-live为可选项,表示是否合并索引数据到Solr集群,不指定本参数则无法在Solr中查到建立的索引;
  • --overwrite-output-dir为可选项,表示是否重复使用HDFS目录;
  • --verbose为可选项,表示是否输出详细信息;
  • --reducers为MapReduce任务时候使用到的reducer个数,与shard数保持一致;
  • --zk-host为可选项,表示solr在zookeeper中的路径;
  • --rowkey-dir为可选项,增量索引时使用,表示rowkey的存放路径。
  • --hbase-indexer-file为可选项,使用HBase多实例时添加,且需要修改对应的配置项,详细参考Solr over HBase章节。

hbase-indexer batch-indexer --hbase-indexer-zk 192.168.1.1:2181,192.168.1.2:2181,192.168.1.3:2181 --hbase-indexer-name userIndexer --output-dir hdfs://hacluster/user/solr/test --go-live --overwrite-output-dir --verbose --reducers 10 --zk-host 192.168.1.1:2181,192.168.1.2:2181,192.168.1.3:2181/solr --rowkey-dir hdfs://hacluster/user/solr/rowkey --hbase-indexer-file /opt/client/Solr/hbase-indexer/conf/user.xml

查看实时索引任务状态

hbase-indexer replication-status -z hostip:zkport --hbase-instance-file configfile_uri --enable-jmx

  • replication-status为查看实时索引任务状态;
  • -z为zookeeper信息;
  • --hbase-instance-file为HBase实例配置文件绝对路径
  • --enable-jmx为可选项,使用JMX监控Hbase RegionServer相关信息,需要RegionServer启动参数内添加如下内容:-Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=remote_port(默认是21146)

hbase-indexer replication-status -z 192.168.1.1:2181 --hbase-instance-file /opt/client/Solr/hbase-indexer/conf/hbase-site.xml --enable-jmx

在安全模式集群下,查看实时索引任务状态命令,需要使用hbase用户进行鉴权。