从Solrj4到Solrj5的升级之路

转载 2016年06月02日 09:58:34

标签:solr   solrj   solr5   

题语:Solr5发布了,带来了许多激动人心的新特性,但Solrj的许多接口也发生了变化,升级是痛苦的,但也是必须的,下面就赶紧来看看有哪些代码需要升级吧。

变化1:SolrServer变成了SolrClient

应该说这个变化是合理的,毕竟Solrj就是一个客户端,命名为Server本身就有问题。这样一来,所有SolrServer系列的类都需要更改为SolrClient系列的类,好在方法基本继承过来了,只需要修改一下类名就可以了。

SolrServer -> SolrClient
HttpSolrServer -> HttpSolrClient
CloudSolrServer -> CloudSolrClient

变化2:提交请求的方式变了

在Solrj4中,向服务器提交请求的方式比较简单,首先扩展SolrRequest类,将需要组合的参数都以方法的形式暴露出来,并重写process方法进行参数组合,如下所示。

class MySolrRequest extends SolrRequest {

    ......

    @Override
    public SolrResponse process(SolrServer server)
                    throws SolrServerException, IOException {
        long startTime = System.currentTimeMillis();
        CoreAdminResponse res = new CoreAdminResponse();
        res.setResponse( server.request( this ) );
        res.setElapsedTime( System.currentTimeMillis()-startTime );
        return res;
    }
}

SolrRequest req = new MySolrRequest();
SolrResponse res = req.process(solrServer);
if (res.getResponse().findRecursive("error", "failure") != null)
    return false;
return true;

在Solrj5中,SolrRequest被极大地增强了,定义了许多新的子类出来,用户基本上不需要自定义新的Request类了,但学习成本相应的也变高了,有得必有失啊! 
以在Cloud中创建Collection为例,新的Request为CollectionAdminRequest.Create类,用户只需要创建这个类的实例就可以设置所有的相关参数。提交仍然是process方法,只不过这个方法已经不需要我们重载了,直接调用就可以了,而且还扩展了返回的SolrResponse类,例如这里返回的就是CollectionAdminResponse类,代码如下。

CollectionAdminRequest.Create req = new CollectionAdminRequest.Create();
try {
    req.setCollectionName(coreName);
    req.setConfigName(confName);

    req.setReplicationFactor(factor);
    req.setNumShards(shards);
    req.setMaxShardsPerNode(maxShardsPerNode);
    CollectionAdminResponse res = req.process(cloudSolrClient);
    if (res.getResponse().findRecursive("error", "failure") != null)
        return false;
    return true;
} catch (SolrServerException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}  

新版的process方法比老版的多抛出一个IOException异常,需要增加对该异常的处理。

变化三:对Zookeeper的支持增强了

在Solrj4中,对Zookeeper的支持还比较简单,主要就是通过org.apache.solr.cloud.ZkController类来完成对Zookeeper中内容的管理。 
到了Solrj5,对ZkController类的方法进行了分隔,新增加了不少类,而且干脆就抛弃了对ZkController类的支持,因此给代码升级带来不少麻烦。 
例如对于对在Zookeeper中配置文件的管理,老版代码为

ZkController.uploadConfigDir(zkClient, new File(confDir), confName);
ZkController.downloadConfigDir(zkClient, confName, new File(confDir));

新版增加了ZkConfigManager类进行专门管理,相应的方法也由静态方法变成了动态方法,尤其是参数从File类型变成了JDK7中新引入的Path类型。

ZkConfigManager confManager = new ZkConfigManager(zkClient);
confManager.uploadConfigDir(Paths.get(confDir), confName);
confManager.downloadConfigDir(confName, Paths.get(confDir));

从Solrj4到Solrj5的升级之路

标签:solr   solrj   solr5   

原文:http://blog.csdn.net/zhylg2001/article/details/45599471

从Solrj4到Solrj5的升级之路

标签:solr   solrj   solr5    题语:Solr5发布了,带来了许多激动人心的新特性,但Solrj的许多接口也发生了变化,升级是痛苦的,但也是必须的,下面就赶紧来看看有哪些代...
  • rdman
  • rdman
  • 2016年09月26日 13:18
  • 693

程序员的升级之路

作为一只工作超过5年的程序员,昨天看资料的时候看到有点感触的东西在此记录下来: 提高工作效率,减少加班 网上有很多人都在说提高效率,但是很少有人说通过什么途径或者方面去提高工作效率。只能说...
  • seacean2000
  • seacean2000
  • 2016年07月10日 23:33
  • 642

java程序员成长之路——转

第二部分:对于参加工作一年以内的同学。   恭喜你,这个时候,你已经拥有了一份Java的工作。这个阶段是你成长极快的阶段,而且你可能会经常加班。   但是加班不代表你就可以松懈了,永远记得...
  • zxh_2581285470
  • zxh_2581285470
  • 2016年09月21日 17:06
  • 1088

程序员练级之路 (作者:陈皓)

建议:不要乱买书,不要乱追新技术新名词,基础的东西经过很长时间积累而且还会在未来至少10年通用。回顾一下历史,看看历史上时间线上技术的发展,你才能明白明天会是什么样。一定要动手,例子不管多么简单,建议...
  • hanqing280441589
  • hanqing280441589
  • 2014年07月17日 19:24
  • 2650

Java程序员谈一谈-----java程序员成长之路

转载:http://www.banzg.com/archives/679.html?ref=myread 阿里面试回来,想和Java程序员谈一谈 引言 其实本来真的没打算写这...
  • wickedvalley
  • wickedvalley
  • 2017年02月10日 22:07
  • 5641

架构师之路16年精选50篇

2016精选索引,点击标题阅读相关文章。 【方法论】 《秒杀系统架构优化思路》 《分布式ID生成器》 《互联网架构,如何进行容量设计》 《线程数究竟设多少合理》 《单点系统架构的可...
  • a314773862
  • a314773862
  • 2017年02月13日 19:05
  • 4903

我的OC升级之路(二)

完成了OC的类的声明, 开始类的实例化. 方法也是有返回值的, 方法的名字要有冒号  :      -          (void)     setNum             :      ...
  • yys2822017271
  • yys2822017271
  • 2015年02月12日 16:59
  • 157

ThinkJS3升级之路

是否要升级CmPage后端的NodeJS框架,当初选择的是ThinkJS,主要是用async/await的写法比较符合一般的思维习惯,也适合写一些比较复杂的业务逻辑,ThinkJS升级到版本3.x以后...
  • sawasoft_defans
  • sawasoft_defans
  • 2017年10月09日 11:09
  • 601

我的OC升级之路(一)

第一次写博客, 以前连qq空间日志都懒得写.作为一个菜鸟, 文章主要是以学习心得体会为主. 以后有了能力以后,会尝试B格高一点的内容. 水平有限, 如果有错误的地方希望各位前辈, 大神告诉我,我一定会...
  • yys2822017271
  • yys2822017271
  • 2015年02月12日 12:53
  • 252

APP架构升级之路

随着智能设备普及和移动互联网发展,移动端应用逐渐成为用户新入口,重要性越来越突出。但企业一般是先有PC端应用,再推APP,APP 1.0版的功能大多从现有PC应用平移过来,没有针对移动自身特点考虑AP...
  • zhouquan_csdn
  • zhouquan_csdn
  • 2016年06月02日 13:53
  • 192
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:从Solrj4到Solrj5的升级之路
举报原因:
原因补充:

(最多只允许输入30个字)