如何从zookeeper下载Solr集合配置

时间:2017-05-24 18:31:13

标签: solr apache-zookeeper solrcloud

我在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>

  3. 第二个选项可以节省我很多时间,但问题是我的zookeeper有很多配置列表,我不确定用于创建集合的配置目录。

    有没有办法找出用于创建集合的集合配置?

2 个答案:

答案 0 :(得分:5)

用于创建集合的配置信息存储在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 
    

答案 1 :(得分:1)

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

在zookeeper中找到正确的位置后,configs目录中的一个目录应与Collections&gt;下管理UI中显示为“config-name”的名称相匹配。 name_of_your_collection

如果您的项目使用gradle,那么项目中的配置上下载(您可能希望将这些内容检查到版本控制中)可以通过插件稍微平滑(免责声明:我写了这个插件)

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

然而,还有一个复杂的问题需要注意,如果集合使用的是托管模式,那么正在使用的实际模式将不在schema.xml中,而是在名为“managed-schema”的文件中

字段可能是通过Schema Rest API添加的,因此“用于创建集合的文件”在这方面有点模糊,但managed_schema可以重命名为schema.xml,solr配置修改为{ {3}}模式,如果你想要的话。