`
kylinsoong
  • 浏览: 239638 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Solr学习笔记(四)Solr索引复制-示例说明

阅读更多

 准备:

为什么要进行索引复制呢?当有很多个客户并发访问某Solr服务器,这可能会导致Solr服务器崩溃(Solr服务器性能达不到这些客户并发访问的需求),这时就可以考虑通过索引复制,将索引复制到多个服务器上,这就是Solr的索引复制,如下图所示:

如图:Master Solr 为性能达不到很多客户并发访问的服务器,是需要被索引复制的服务器,Slave instances 为复制了Master Solr上索引的服务器,这样客户端可以访问Master Solr 和 Slave instances中的任意一个,以便降低了服务器性能的要求;

 

开始:

同时开启三台Tomcat服务器,端口号分别为:8080,8888,8983,8080代表Master Solr,8888和8983代表Slave instances ;

用前面学习笔记(三)中SolrjClient提供的借口向Master Solr(8080)添加数据,然后在Slave instances上测试;

说明:

要进行索引复制测试需要做一下配置:

Master Solr(8080),在solrconfig.xml中添加如下配置:

<requestHandler name="/replication" class="solr.ReplicationHandler" >
    <lst name="master">
      <str name="replicateAfter">commit</str>
      <str name="replicateAfter">optimize</str>
      <str name="replicateAfter">startup</str>
      <str name="confFiles">schema.xml,stopwords.txt</str>
    </lst>
</requestHandler>

 

 

Slave instances(8888,8983)solrconfig.xml中添加如下配置:

 

<requestHandler name="/replication" class="solr.ReplicationHandler" >
   <lst name="slave">
      <str name="masterUrl">http://localhost:8080/solr/replication</str>
      <str name="pollInterval">00:00:60</str>
    </lst>
</requestHandler>

 

配置完后启动三台服务器;

可在控制台点击Replication查看复制页面后台控制页面,如下截图:

Master Solr(8080):

Slave instances(8888,8983):

 

如上图,可以通过上面所示Button控制索引的复制,如点击Replicate Now马上开始把Master上的索引复制到自己上,如果Disable Poll 值为disable时开启了自动复制功能,即当你Master上添加索引后马上复制到Slave上,可以单击该Button设他的值为enable;

向Master Solr(8080)上添加数据(SolrJClient):代码如下

List<SolrInputDocument> docs = new ArrayList<SolrInputDocument>();
		for (int i = 0; i < 10; i++) {
			SolrInputDocument doc = new SolrInputDocument();
			doc.addField("id", i);
			doc.addField("severity",i);
			doc.addField("sLocation","Beijing_" + i);
			doc.addField("msg", "kobe bryant" + i);
			doc.addField("name", "kylin soong" + i);
			docs.add(doc);
		}
		client.addDocs(docs);

 

然后在他的Slave instances(8888,8983)任意一个上查询,你都会查询到上面添加到Master Solr上的数据,以8888为例,查询代码如下:

String url = "http://localhost:8888/solr";
SolrjClient client = new SolrjClient();
client.startSolrServer(url);
List<SolrDocument> lists = client.query("kobe");
System.out.println(lists.size());
for(SolrDocument doc : lists) {
			for(Iterator iterator = doc.iterator();iterator.hasNext();) {
				Map.Entry<String, Object> entry = (Entry<String, Object>) iterator.next();
				System.out.print(entry.getKey() + "=" + entry.getValue() + " ");
				//				System.out.print(iterator.next() + "   ");
			}
			System.out.println();
		}

 

 

结果:

10
id=0 severity=0 sLocation=Beijing_0 msg=kobe bryant0 name=kylin soong0 
id=1 severity=1 sLocation=Beijing_1 msg=kobe bryant1 name=kylin soong1 
id=2 severity=2 sLocation=Beijing_2 msg=kobe bryant2 name=kylin soong2 
id=3 severity=3 sLocation=Beijing_3 msg=kobe bryant3 name=kylin soong3 
id=4 severity=4 sLocation=Beijing_4 msg=kobe bryant4 name=kylin soong4 
id=5 severity=5 sLocation=Beijing_5 msg=kobe bryant5 name=kylin soong5 
id=6 severity=6 sLocation=Beijing_6 msg=kobe bryant6 name=kylin soong6 
id=7 severity=7 sLocation=Beijing_7 msg=kobe bryant7 name=kylin soong7 
id=8 severity=8 sLocation=Beijing_8 msg=kobe bryant8 name=kylin soong8 
id=9 severity=9 sLocation=Beijing_9 msg=kobe bryant9 name=kylin soong9 

 

结束!

 

 

  • 大小: 16.5 KB
  • 大小: 35.6 KB
  • 大小: 76 KB
分享到:
评论

相关推荐

    Solr学习笔记。。

    四、Solr查询示例 1. 搜索所有文档字段包含"video"的记录:`http://localhost:8983/solr/select?q=video` 2. 查询价格在0到400之间的商品,返回id、name和price字段,并按类别进行 faceting:`...

    Solr学习笔记.doc

    接着,将Solr的WAR文件复制到Servlet容器的webapps目录,同时下载并解压示例应用程序。设置Solr的主位置可以通过设置java系统属性`solr.solr.home`,或者通过JNDI查找,或者在包含solr目录的目录中启动Servlet容器。...

    Solr学习笔记(三)Solr客户端开发实例

    Solr学习笔记(三)——Solr客户端开发实例 在本文中,我们将深入探讨Solr客户端的开发,以便更好地理解如何在实际项目中利用Solr的强大功能。Solr是一款开源的全文搜索引擎,提供了高效的搜索和索引功能。通过Solr...

    solr-4.10.3.rar

    `xufuli.txt`可能是一个用户自定义的文档,可能是Solr学习笔记、配置示例或者使用心得。不过,由于具体内容未知,这里无法详细展开。 总之,Solr 4.10.3是一个强大且灵活的搜索引擎,适用于各种规模的企业级应用。...

    solr_学习笔记_v1.1

    ### Solr学习笔记_v1.1 - 高性能搜索引擎的核心参数与查询语法详解 #### 一、Query参数:深入理解Solr查询的核心要素 Solr作为高性能的全文搜索引擎,其强大的查询能力很大程度上依赖于一系列精细调整的参数。以下...

    Lucene笔记

    - **学习版本**:Lucene 4.0(由于lukeall-4.0.0-ALPHA.jar并非最新版本,因此选择该版本进行学习) ### 全文检索简介 全文检索是指根据检索条件,在所有文档中进行精确或模糊匹配的过程。这种检索方式特别适用于...

    rails _sunspot 学习笔记

    #### 四、Crontab 插件安装与使用 除了 Sunspot 外,你还可以考虑使用 Crontab 插件来定时更新索引或执行其他定期任务。这在需要定期处理大量数据的情况下非常有用。 **安装 Crontab 插件**: ```bash gem '...

    lucene学习笔记

    **Lucene学习笔记** Lucene是一个高性能、全文检索库,由Apache软件基金会开发并维护,是Java编程语言中广泛使用的搜索引擎库。它提供了强大的文本分析、索引和搜索功能,适用于构建复杂的全文检索系统。本笔记将...

    lucene笔记共38页.pdf.zip

    《Lucene笔记共38页.pdf》压缩包包含了一份详尽的Lucene学习资料,这份笔记深入浅出地探讨了Apache Lucene这个全文搜索引擎库。Lucene是Java开发的开源库,广泛应用于信息检索和大数据分析领域,为开发者提供了强大...

    lucene学习资料

    这是作者的学习笔记,可能包含了个人理解和使用Lucene过程中遇到的问题及解决方案,提供了不同角度的见解和实践经验。 通过这些文档,你可以系统地学习和掌握Lucene的各个方面,从基础到进阶,从理论到实践,逐步...

    org.liveSense.sample.gwt.notes-1.0.5.zip

    这个特定的模块可能是GWT项目的一部分,提供了某种笔记功能或示例。 描述 "org.liveSense.service.solr.configurationLoader.zip,基于solr的搜索服务配置加载器rivesense基于solr的搜索服务配置加载器" 强调了项目 ...

    分享一个Nutch入门学习的资料

    压缩包中的“Nutch.pdf”可能是Nutch的官方文档、教程或者是博主整理的学习笔记。这份PDF文档通常会详细讲解Nutch的架构、工作流程、配置方法,以及一些示例和最佳实践。学习者可以通过阅读这份文档,系统地了解...

Global site tag (gtag.js) - Google Analytics