我正在编写一个自定义Solr组件,它使用CloudSolrServer实例对分布式索引执行辅助查询。我正在以通常的方式从solrconfig.xml
配置中获取Zookeeper URL和集合名称:
String zookeeper = params.get(ZOOKEEPER_URL);
String collection = params.get(COLLECTION_NAME);
我想从我的solrconfig.xml
文件中删除Zookeeper url条目和集合名称条目。是否有可能从其他地方获取这些值?我正在运行我的组件的同一个集合上执行辅助查询。如何从组件代码中获取我的集合名称及其Zookeeper URL?
答案 0 :(得分:4)
可以使用传递给每个组件方法的rb
(ResponseBuilder
)参数来获取zookeeper url和集合名称:
CoreDescriptor coreDescriptor = rb.req.getCore().getCoreDescriptor();
String collectionName = coreDescriptor.getCloudDescriptor().getCollectionName();
ZkController zkController = coreDescriptor.getCoreContainer().getZkController();
String zookeeperUrl = zkController.getZkServerAddress();
假设自定义组件类扩展SearchComponent
,rb
参数将传递给组件的每个公共方法:prepare
,process
,distributedProcess
, modifyRequest
,handleResponses
和finishStage
。