solr合并索引

solr下可以通过mergeindexes命令完成一个或多个core到其他core的索引合并,合并索引需要保证要被合并到的core的schema要与其他来源core的schema兼容,否则就会出现无法启动core的问题,我们可以通过代码CoreAdminRequest.MergeIndexes类实现,实例代码如下:

        try(SolrClient client = new HttpSolrClient.Builder(urlString).build();
            SolrClient solr = new HttpSolrClient.Builder(urlString+"/bank4").build()){
            CoreAdminRequest.MergeIndexes mergeIndex = new CoreAdminRequest.MergeIndexes();
            mergeIndex.setCoreName("bank4");
            mergeIndex.setSrcCores(Arrays.asList("bank","bank3"));
            NamedList<Object> result = client.request(mergeIndex);
            System.out.println(result);
            solr.commit();
        }catch(Exception ex){
            ex.printStackTrace();
        }    

注意上面标红部分代码,为了使得合并后的索引可见,需要对target core执行commit或者reload操作!

也可以通过http请求的方式完成,这个方案有两种方式,一个是通过indexDir属性如下:

admin/cores?action=MERGEINDEXES&core=new-core-name&indexDir=
path/to/core1/data/index&indexDir=path/to/core2/data/index
使用这种方式有下面主要优缺点:

1.缺点1:可能存在index破坏的情况(合并索引时同步有其他更新target core索引的操作发生)

2.缺点2:合并的索引必须跟target core在一台机器上

3.优点:可以合并任何lucene索引数据

另一种方式就是通过srcCore,具体如下:

admin/cores?action=mergeindexes&core=new-core-name&srcCore=core1-name&srcCore=core2-name
该方案的优缺点如下:

1.优点:避免合并后的索引出现被破坏的问题

2.缺点:只能使用solr core的索引文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值