我们有 - 3个ZooKeepers运行(独立,不是SolrCloud嵌入的) - 2 Solr实例(版本4.5)
在我们的conf目录中,我们添加文件solrcore.properties以便为dataimporthandler放置动态参数。 一切正常(见下文我们是如何做到的,它也可能对人们有帮助)。
问题是当我想要更改一个值时,除非我重新启动Jetty,否则它无法正常工作?
我们在内部放置参数和值
dihBddHost=host
dihBddPort=3306
dihBddDatabase=mydatabase
dihBddLogin=mylogin
dihBddPassword=mypassword
在solrconfig.xml中,在DataImportHandler部分,我们做了
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="update.chain">langid</str>
<str name="config">db-data-config.xml</str>
</lst>
<lst name="invariants">
<str name="dihBddHost">${dihBddHost}</str>
<str name="dihBddPort">${dihBddPort}</str>
<str name="dihBddDatabase">${dihBddDatabase}</str>
<str name="dihBddLogin">${dihBddLogin}</str>
<str name="dihBddPassword">${dihBddPassword}</str>
</lst>
</requestHandler>
当我更改我的solrcore.properties时,首先,它将更改放在zookeeper中(进入/var/opt/solr4.5/myapp/solr /)
cloud-scripts/zkcli.sh -cmd upconfig -zkhost 127.0.0.1:2181 -d /var/opt/solr4.5/myapp/solr/mycore/conf -n conf_one
http://myserveur:8983/solr/admin/collections?action=RELOAD&name=collection_one
如果我去Solr Administration,请在“Cloud”菜单上&gt; “树”&gt; “/ configs”&gt; “conf_one”,我可以看到我的文件solrcore.properties发生了变化。
那么有没有重新启动Jetty实例来加载更改的解决方案?
答案 0 :(得分:1)
在通过网络阅读了很多线程和JIRA后,我发现在zookeeper中使用solrcore.properties并不是一个好方法。 事实上,即使是同一个集合,您的实例也可能具有不同的值。
所以,我所做的,是使用CoreAdmin创建我的核心,并直接将我的属性放在那里,以便在创建时设置everthing。
例如:
http://myserver:8983/solr/admin/cores?action=CREATE&name=core_one&collection=collection_one&collection.configName=conf_one&property.dihBddHost=myhost&property.dihBddPort=3306&property.dihBddDatabase=mydatabase&property.dihBddLogin=mylogin&property.dihBddPassword=mypassword
在solrconfig.xml中,不要忘记输入默认值,以避免一些错误; - )
<!-- Data Import Handler -->
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">db-data-config.xml</str>
</lst>
<lst name="invariants">
<str name="dihBddHost">${dihBddHost:myhost}</str>
<str name="dihBddPort">${dihBddPort:3306}</str>
<str name="dihBddDatabase">${dihBddDatabase:mydatabase}</str>
<str name="dihBddLogin">${dihBddLogin:mylogin}</str>
<str name="dihBddPassword">${dihBddPassword:mypassword}</str>
</lst>
</requestHandler>
创建核心后,如果打开core.properties文件,则会看到自己编写的属性。
非常有用,因为在DEV / TEST / PROD环境中使用相同的conf文件但连接值不同。
希望它有所帮助。
答案 1 :(得分:0)
我还需要设置多个属性,我发现了一种更简单的方法,而不是将它们全部单独注入到CREATE集合命令中。只需添加包含主属性文件路径的“properties”属性(请参阅the documentation):
http://myserver:8983/solr/admin/cores?action=CREATE&name=core_one&collection=collection_one&collection.configName=conf_one&property.properties=/var/lib/solr/allcore.properties
具体做法是:
&property.properties=/var/lib/solr/allcore.properties
并将allcore.properties文件部署到群集中的每个节点。