前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >solr合并索引

solr合并索引

作者头像
johnhuster的分享
发布于 2022-03-28 11:46:43
发布于 2022-03-28 11:46:43
52700
代码可运行
举报
文章被收录于专栏:johnhusterjohnhuster
运行总次数:0
代码可运行

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        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属性如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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的索引文件

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/01/08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验