我在solrcloud中有一个使用zookeeper托管配置创建的集合,我想要用于创建集合的所有集合配置文件。以下是我找到的选项:
手动复制Solrcloud UI中的所有文件。
solrUI->cloud->tree->/collections/<collection-name>
从zookeeper下载文件
/opt/solr/server/scripts/cloud-scripts/zkcli.sh -cmd downconfig -zkhost <zk hosts>/usecasedir -confname <configuration name> -confdir <dir to download>
第二个选项可以节省我很多时间,但问题是我的zookeeper有很多配置列表,我不确定用于创建集合的配置目录。
有没有办法找出用于创建集合的集合配置?
答案 0 :(得分:5)
用于创建集合的配置信息存储在zk本身中。一些bash脚本(使用伟大的jq实用程序)足以满足您的需求:
查找给定XXX集合使用的配置:
CONFIGNAME=$(curl -L -s "http://localhost:8983/solr/admin/zookeeper?detail=true&path=/collections/XXX" | jq '.znode.data' | cut -d ":" -f2 | tr -d '}"\\')
现在下载配置:
/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}}模式,如果你想要的话。