我正在尝试使用在创建请求处理程序和其他组件时为将jar指定为运行时库而添加的支持。但是,我从文档(https://cwiki.apache.org/confluence/display/solr/Adding+Custom+Plugins+in+SolrCloud+Mode)中不清楚这是否仅适用于通过ConfigAPI创建的组件,或者如果将runtimeLib="true"
添加到solrconfig.xml中它也应该有效。
例如:
<requestHandler name="/browse" class="solr.SearchHandler" runtimeLib="true">
我添加了runtimeLib =&#34; true&#34;到solrconfig.xml中的所有searchComponents和requestHandlers,看看它是否可行,但是在启动Solr实例时,它们都会失败,因为它们正在查找自定义jar文件中的类。我已经根据Solr参考指南/ Wiki文档添加了.system集合并上传了jar,并且可以看到.system集合,我也可以看到我的集合的configoverlay.json有我上传的两个jar
我的收藏的configoverlay.json内容
{"runtimeLib":{
"my-custom-jar":{
"name":"my-custom-jar",
"version":1},
"sqljdbc41-jar":{
"name":"sqljdbc41-jar",
"version":1}}}
是否支持在solrconfig.xml中指定runtimeLib属性?如果是这样,那么正确的用法是什么?
答案 0 :(得分:0)
你快到了。在您链接到的页面上,有一个创建解析器的示例。该示例使用与页面其余部分完全不同的示例值,因此我可以理解为什么您可能会掩盖它。
关键是,您需要使用页面上提供的curl命令注册请求处理程序。不幸的是,您需要使用我必须深入了解源代码的命令来查找:create-requesthandler
。要使用上面的值创建请求处理程序,我认为您应该发出命令
curl "http://{servername}:8983/solr/{collection}/config" -H 'Content-type:application/json' -d '{
"create-requesthandler": {
"name":"my-custom-jar",
"runtimeLib": true,
"class": "solr.SearchHandler"
}
}'
请记住替换servername
和collection
的值。如果您使用的是非默认值,请更改端口。
重新启动你的solr服务器,该插件应该可用。
答案 1 :(得分:0)
目前似乎不支持从托管模式的插件中加载类:
https://issues.apache.org/jira/browse/SOLR-8751
这可能意味着您必须如上所述通过API动态添加它。因此,解决方案可能是使用最小的托管架构,然后添加需要外部jar的字段。
对我来说,最简单的解决方案是根本不使用Blob API,而是直接将所需的jar添加到Solr实例的类路径中,如下所述: