`
诗意生活
  • 浏览: 3371 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Solr4.0 tomcat集群和elasticSearch一些事

阅读更多

  最近业余时间接触es不久,碰到了一些关于批量添加数据的问题,在本地机器上配置了三个节点的集群,一共有5.2w的元数据,批量更新的时候尼玛总是出现IO异常问题,数据少还中,比如500,1000。已经做了批量更新的间隔,如一次1000,500,200都试过,还是IO。如果说是本机配置的不够,2G的足够了吧,通过一个侧面的例子也能反应出来,同样在本机做了一个numshards=3的solr集群,更新25.8w的数据都没有问题。

  下面贴出创建es索引,更新数据的代码,有懂的朋友帮解答一下,ps: es的资料太少了,光看例子都够费劲的,尼玛java链式方法老长老长,显得牛逼吗。

  

public void createIndex() throws IOException {
		XContentBuilder content = XContentFactory.jsonBuilder()
												.startObject()
												.startObject("vType")
												.startObject("properties")
												.startObject("title").field("type", "string").field("indexAnalyzer", "ik").field("searchAnalyzer", "ik").endObject()
												.startObject("author").field("type", "string").field("indexAnalyzer","ik").field("searchAnalyzer", "ik").endObject()
												.startObject("keyword").field("type", "string").field("indexAnalyzer","ik").field("searchAnalyzer", "ik").endObject()
												.startObject("fenlei").field("type", "string").endObject()
												.startObject("other").field("type", "string").endObject()
												.startObject("subname").field("type", "string").endObject()
												.startObject("subtitles").field("type", "string").endObject()
												.startObject("summary").field("type", "string").field("indexAnalyzer","ik").field("searchAnalyzer", "ik").endObject()
												.startObject("videolink").field("type", "string").endObject()
												.endObject()
												.endObject()
												.endObject();
		client.admin().indices().prepareCreate("video").addMapping("vType", content)
						          .setSettings(ImmutableSettings.settingsBuilder().put("number_of_shards", 8)).execute().actionGet();
	}

 

     更新数据的代码:

    

public void bulkData(){
		BulkRequestBuilder blukRequest = client.prepareBulk();
		try {
		IndexReader reader = IndexReader.open(FSDirectory.open(new File(store_path)));
		int maxDocs = reader.maxDoc();
		List<Document> list  = new ArrayList<Document>();
		int count = 0;
		for (int i = 0; i < maxDocs; i++) {
				list.add(reader.document(i));
				if(list.size()%100==0){
					for(int j =0;j<list.size();j++){
						Document doc = list.get(j);
						blukRequest.add(client.prepareIndex("video", "vType", String.valueOf((j+count)))
								   .setSource(XContentFactory.jsonBuilder()
										                     .startObject()
										                     .field("title",doc.get("title"))
										                     .field("author",doc.get("author"))
										                     .field("keyword",doc.get("keyword"))
										                     .field("fenlei",doc.get("fenlei"))
										                     .field("other",doc.get("other"))
										                     .field("subname",doc.get("subname"))
										                     .field("subtitles",doc.get("subtitles"))
										                     .field("summary",doc.get("summary"))
										                     .field("videolink", doc.get("videolink"))
										                     .endObject()
										                     ));
					}
					count+=list.size();
					BulkResponse bulkResponse = blukRequest.execute().actionGet();
					client.admin().indices().prepareRefresh().execute().actionGet();
					if(!bulkResponse.hasFailures())
						System.out.println("------success!");
					else
						System.out.println("------failure!");
					list.clear();
				}
		 }
		if(list.size()>0){
			for(int i =0;i<list.size();i++){
				Document doc = list.get(i);
				blukRequest.add(client.prepareIndex("video", "vType", String.valueOf((i+count)))
						   .setSource(XContentFactory.jsonBuilder()
								                     .startObject()
								                     .field("title",doc.get("title"))
								                     .field("author",doc.get("author"))
								                     .field("keyword",doc.get("keyword"))
								                     .field("fenlei",doc.get("fenlei"))
								                     .field("other",doc.get("other"))
								                     .field("subname",doc.get("subname"))
								                     .field("subtitles",doc.get("subtitles"))
								                     .field("summary",doc.get("summary"))
								                     .field("videolink", doc.get("videolink"))
								                     .endObject()
								                     ));
				count+=list.size();
				BulkResponse bulkResponse = blukRequest.execute().actionGet();
//				client.admin().indices().prepareRefresh().execute().actionGet();
				if(!bulkResponse.hasFailures())
					System.out.println("------success!");
				else
					System.out.println("------failure!");
				list.clear();
			}
		}
		
		} catch (CorruptIndexException e) {
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

   还是静坐等待高手的指点ing......

   接下来介绍solr4.0Alpha,喜欢solr的朋友可以学习了哦...

   限于篇幅solr4.0+tomcat的安装,查看我的百度空间http://hi.baidu.com/620734263/item/372ea2c7955fbc7088ad9eaa

  

  • 大小: 44 KB
  • 大小: 51.3 KB
  • 大小: 30.3 KB
分享到:
评论

相关推荐

    solr-zookeeper-tomcat集群搭建

    Ik Analyzer是一款开源的、基于Java实现的中文分词器,常用于Solr和Elasticsearch等全文搜索引擎的中文处理。在Solr中使用Ik Analyzer,你需要: 1. 将ik-analyzer解压到Solr的lib目录下。 2. 在schema.xml中定义一...

    全文搜索引擎Solr与ElasticSearch入门至集群及项目实战(Solr+ES)

    本课程提供所有代码笔记...14、ElasticSearch下载安装(window以及linux下安装) 15、集群环境搭建 16、客户端Kibana安装与使用 17、集群管理插件head安装使用 18、java api 操作 ES 19、电商项目实战应用等等 ....

    Lucene全文检索框架+Solr+ElasticSearch搜索引擎(Java高级必备.ES)

    课程提供所有代码笔记素材...2、ElasticSearch下载安装(window以及linux下安装) 3、集群环境搭建 4、客户端Kibana安装与使用 5、集群管理插件head安装使用 6、java api 操作 ES 7、电商项目实战应用等等 .....

    BroadleafCommerce-BroadleafCommerce-4.0.x.zip_BroadleafCommerce_

    - 利用Apache Solr或Elasticsearch实现高性能的全文搜索功能。 - 使用Maven或Gradle进行项目构建和依赖管理。 4. **社区与支持**: - "fatherz88"可能是社区中的一员,表明有活跃的开发者参与和贡献。 - 开源...

    程序员简历技能描述怎么写高大上-java篇

    3. 掌握Oracle、MySQL、SQLServer等关系型数据库,以及Elasticsearch和Solr等搜索服务框架,具备索引优化和性能调优能力。 在描述这些技能时,不仅要展示你所掌握的技术,还要强调你在实际项目中的应用和解决问题的...

    java岗位求职简历-黑金风格(带项目经历内容).docx

    - 中信银行基金管理系统:利用Canal同步数据到Elasticsearch,使用Memcache和Redis进行缓存优化,提高查询性能。通过接口拆分和多线程处理优化业务逻辑,确保快速响应。 综上所述,这位求职者具备扎实的Java开发...

    Java项目--新闻发布系统

    这可能涉及到对数据库查询优化和全文搜索技术,如Solr或Elasticsearch。 5. **评论互动**:用户可以对新闻进行评论,形成社区互动。这部分可能需要处理并发访问和实时更新,可以使用WebSocket或AJAX技术实现动态...

    某公司研发及运维自动化技术体系课件.pptx

    - 计算层涉及Solr、ElasticSearch、Hadoop、HBase、Storm和Spark。 - 运维工具包括Linux、Nginx、Puppet、Zabbix和OpenStack。 - 项目管理工具如Eclipse、SVN、Maven、Hudson持续集成以及Confluence等。 **技术架构...

    shB004基于springboot音乐管理系统

    2. 音乐搜索:集成Elasticsearch或Solr进行全文检索,提高搜索效率。 3. 版权保护:可以实现数字版权管理(DRM)功能,确保音乐内容的安全性。 四、安全与权限管理 系统可能使用Spring Security进行身份验证和授权...

    java工程师简历_java简历.docx

    - **搜索引擎**:了解ElasticSearch搜索引擎。 - **缓存管理**:接触过Redis缓存管理系统,处理分布式缓存和集群下session共享问题。 ### 工作经验 1. **杭州商快软件有限公司**(2016/7 - 至今) 在此期间,他...

    Java面试参考简历.docx

    - **Elasticsearch**:是一个分布式的、RESTful风格的搜索和数据分析引擎,它能够处理海量的数据。 #### **Solr** - **Solr**:是一个高性能、可伸缩的企业级搜索平台,适用于需要全文搜索的应用场景。 #### **...

    Web网站架构演变趋势.docx

    对于大量查询操作,使用全文搜索引擎(如Elasticsearch或Solr)能提供更快的搜索速度和更好的用户体验。搜索引擎索引数据库中的部分或全部数据,提供高效的全文检索功能,减轻数据库读取压力。 ### 阶段六:用缓存...

    架构方案[借鉴].pdf

    例如,使用 Hadoop 或 Spark 进行大数据处理,使用 Elasticsearch 或 Solr 进行搜索服务。 6. **冗余与容错**:为保证高可用性,系统设计应考虑冗余和容错机制。例如,通过主从复制或分布式一致性算法(如 Paxos、...

    java基于SpringBoot的在线文档管理系统的设计与实现

    - 可以使用Elasticsearch或Solr进行全文搜索,提高文档检索效率。 7. **用户界面**: - 创建响应式前端页面,可使用Bootstrap、Vue.js或React等现代前端框架,确保在不同设备上的良好展示。 - 使用Ajax实现异步...

    java web论坛模块

    9. **搜索功能**:论坛通常提供关键词搜索,这就需要理解全文搜索的概念,可能涉及Lucene或Solr等搜索引擎库,或者集成Elasticsearch实现高级搜索功能。 10. **AJAX异步通信**:为了提升用户体验,论坛可能会使用...

    JAVA技术体系

    - **搜索引擎**:如 Solr 或 Elasticsearch。 - **缓存引擎**:如 Redis。 - **任务调度**:如 Quartz。 - **身份认证**:如 Spring Security。 - **报表服务**:如 BIRT。 - **集群、负载均衡、故障转移**:实现高...

    单点登录源码

    Solr & Elasticsearch | 分布式全文搜索引擎 | [http://lucene.apache.org/solr/](http://lucene.apache.org/solr/) [https://www.elastic.co/](https://www.elastic.co/) Quartz | 作业调度框架 | ...

Global site tag (gtag.js) - Google Analytics