如何从 zookeeper 下载 Solr 集合配置

How to download Solr collection config from zookeeper

我在 solrcloud 中有一个集合,它是使用 zookeeper 管理的配置创建的,我想要用于创建该集合的所有集合配置文件。以下是我找到的选项:

  1. 从 Solrcloud UI 手动复制所有文件。

    solrUI->cloud->tree->/collections/<collection-name>

  2. 从 zookeeper 下载文件

    /opt/solr/server/scripts/cloud-scripts/zkcli.sh -cmd downconfig -zkhost <zk hosts>/usecasedir -confname <configuration name> -confdir <dir to download>

第二个选项会节省我很多时间,但这里的问题是我的 zookeeper 有大量的配置列表,我不确定使用哪个配置目录来创建集合。

有什么方法可以找出创建集合时使用的集合配置吗?

配置集通常位于名为 /configs 的目录中。如果 zookeeper 专用于 solr,这通常位于顶层,如果它被多个应用程序使用,则通常将配置“zk chroot”到子目录。

一旦你在 zookeeper 中找到正确的位置,configs 目录中的一个目录应该与管理 UI 下 Collections > name_of_your_collection [=13] 中显示的名称 "config-name" 相匹配=]

如果您的项目使用 gradle,则可以通过插件(免责声明:我写了这个插件)

https://plugins.gradle.org/plugin/com.needhamsoftware.solr-gradle

然而,还有一个额外的问题需要注意,如果集合使用托管模式,则使用的实际模式不会在 schema.xml 中,而是在名为 "managed-schema" 的文件中

如果需要,可以通过 Schema Rest API, so "files used to create the collection" is a bit fuzzy in that respect, but the managed_schema can be renamed to schema.xml and the solr config modified to take things out of managed 模式添加字段。

用于创建集合的配置信息存储在 zk 本身中。一些 bash 脚本(使用强大的 jq 实用程序)足以满足您的需求:

  1. 查找用于给定 XXX 集合的配置:

    CONFIGNAME=$(curl -L -s "http://localhost:8983/solr/admin/zookeeper?detail=true&path=/collections/XXX" | jq '.znode.data' | cut -d ":" -f2 | tr -d '}"\') 
    
  2. 现在下载配置:

    /opt/solr/bin/solr zk downconfig -n $CONFIGNAME -d config$CONFIGNAME -z localhost:2181