- 浏览: 57340 次
- 性别:
博客专栏
-
从零编写RPC框架
浏览量:0
文章分类
最新评论
-
39er:
请问如果采用同步方式,并行转换多个文档,会有问题吗
关于office转换pdf完美终极解决方案 -
Knightzxf:
Java操作word转PDF的功能除了你介绍的这几种外,还有其 ...
关于office转换pdf完美终极解决方案 -
javatozhang:
非常不错!!!
浅谈分布式项目日志监控
群里小伙伴需要一个solrcloud的解决案例。正好好久没碰过solr了。决定写个demo,顺便重新熟悉下solr。
solr版本:5.0
solr链接:http://archive.apache.org/dist/lucene/solr/5.0.0/
jdk版本:1.70+
windows环境安装:
注意端口号不要冲突-z 表示zookeeper连接配置 ,zookeeper服务要先启动。
服务全部启动好,之后校验下是否成功。
创建conlection
参数说明:
-c : collection名称
-d : 配置文件的路径,可以使用上面提供的实例配置
-n : 配置名称可以和collection名称不同,默认这个参数不填的话,会使用collection名称作为config名称
-shards : 创建的shard个数,建议和集群节点数量一致。
-replicationFactor : 每个shard的副本数,综合考虑为了保证集群的稳定性,建议配置为 最少2个,最多集群节点数量/shard数量 * 2
校验结果:http://localhost:8983/solr/#/~cloud
服务端配置暂时告一段落,之后补上中文分词。
客户端配置:
使用spring-boot-starter-solr来简化集成。核心是spring-data-solr
剩下就是javaconfig了
实体
业务层
资源文件配置:
测试
到此大功告成,下一篇补上中文分词就OK了。
代码地址:https://github.com/ChenXun1989/chenxun-solr
solr版本:5.0
solr链接:http://archive.apache.org/dist/lucene/solr/5.0.0/
jdk版本:1.70+
windows环境安装:
cd D:\app\solr-5.0.0\bin solr.cmd -c -z localhost:2181 -p 8983 cd D:\app\solr-5.0.0-01\bin solr.cmd -c -z localhost:2181 -p 8984 cd D:\app\solr-5.0.0-02\bin solr.cmd -c -z localhost:2181 -p 8985
注意端口号不要冲突-z 表示zookeeper连接配置 ,zookeeper服务要先启动。
服务全部启动好,之后校验下是否成功。
http://localhost:8983/solr/#/~cloud?view=tree
创建conlection
cd D:\app\solr-5.0.0\bin solr.cmd create_collection -c example -d ../example/example-DIH/solr/solr/conf/ -shards 3 -replicationFactor 2
参数说明:
-c : collection名称
-d : 配置文件的路径,可以使用上面提供的实例配置
-n : 配置名称可以和collection名称不同,默认这个参数不填的话,会使用collection名称作为config名称
-shards : 创建的shard个数,建议和集群节点数量一致。
-replicationFactor : 每个shard的副本数,综合考虑为了保证集群的稳定性,建议配置为 最少2个,最多集群节点数量/shard数量 * 2
校验结果:http://localhost:8983/solr/#/~cloud
服务端配置暂时告一段落,之后补上中文分词。
客户端配置:
使用spring-boot-starter-solr来简化集成。核心是spring-data-solr
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.4.0.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.7</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-solr</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
剩下就是javaconfig了
/** * Project Name:chenxun-solr * File Name:SolrConfig.java * Package Name:com.chenxun.solr.config * Date:2016年8月20日下午3:11:32 * Copyright (c) 2016, www midaigroup com Technology Co., Ltd. All Rights Reserved. * */ package com.chenxun.solr.config; import org.apache.solr.client.solrj.SolrClient; import org.apache.solr.client.solrj.impl.CloudSolrClient; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.solr.core.SolrTemplate; import org.springframework.data.solr.core.convert.CustomConversions; import org.springframework.data.solr.core.convert.MappingSolrConverter; import org.springframework.data.solr.core.convert.SolrConverter; import org.springframework.data.solr.core.mapping.SimpleSolrMappingContext; import org.springframework.data.solr.repository.config.EnableSolrRepositories; /** * ClassName:SolrConfig <br/> * Function: TODO ADD FUNCTION. <br/> * Reason: TODO ADD REASON. <br/> * Date: 2016年8月20日 下午3:11:32 <br/> * * @author 陈勋 * @version * @since JDK 1.7 * @see */ @Configuration @EnableSolrRepositories(basePackages = { "com.chenxun.solr" }, multicoreSupport = true) public class SolrConfig { @Value("${spring.data.solr.zk-host}") private String zkHost; @Bean public SolrClient solrClient() { return new CloudSolrClient(zkHost); } @Bean public SolrTemplate solrTemplate(SolrClient solrClient,SolrConverter solrConverter) throws Exception { SolrTemplate solrTemplate = new SolrTemplate(solrClient); solrTemplate.setSolrConverter(solrConverter); return solrTemplate; } @Bean public SolrConverter solrConverter(SimpleSolrMappingContext simpleSolrMappingContext,CustomConversions customConversions){ MappingSolrConverter solrConverter=new MappingSolrConverter(simpleSolrMappingContext); solrConverter.setCustomConversions(customConversions); return solrConverter; } @Bean public SimpleSolrMappingContext simpleSolrMappingContext(){ SimpleSolrMappingContext simpleSolrMappingContext=new SimpleSolrMappingContext(); return simpleSolrMappingContext; } @Bean public CustomConversions customConversions(){ CustomConversions customConversions=new CustomConversions(); // customConversions.registerConvertersIn(new GenericConversionService(){}); return customConversions; } }
实体
/** * Project Name:chenxun-solr * File Name:Product.java * Package Name:com.chenxun.solr.model * Date:2016年8月20日下午4:48:36 * Copyright (c) 2016, www midaigroup com Technology Co., Ltd. All Rights Reserved. * */ package com.chenxun.solr.model; import java.util.HashMap; import java.util.List; import java.util.Map; import lombok.Data; import org.apache.solr.client.solrj.beans.Field; import org.springframework.data.annotation.Id; import org.springframework.data.solr.core.mapping.Dynamic; import org.springframework.data.solr.core.mapping.Indexed; import org.springframework.data.solr.core.mapping.SolrDocument; import org.springframework.stereotype.Component; /** * ClassName:Product <br/> * Function: TODO ADD FUNCTION. <br/> * Reason: TODO ADD REASON. <br/> * Date: 2016年8月20日 下午4:48:36 <br/> * @author 陈勋 * @version * @since JDK 1.7 * @see */ @SolrDocument(solrCoreName="example") // Solr collection name @Data public class Product { @Field("id") // Specify field name in solr @Id private String id; @Field private float price; @Field private String name; @Field("*_s") @Dynamic private Map<String,String> map =new HashMap<String, String>(); }
业务层
/** * Project Name:chenxun-solr * File Name:ProductRepository.java * Package Name:com.chenxun.solr.repository * Date:2016年8月20日下午4:54:24 * Copyright (c) 2016, www midaigroup com Technology Co., Ltd. All Rights Reserved. * */ package com.chenxun.solr.repository; import org.springframework.data.solr.repository.SolrCrudRepository; import com.chenxun.solr.model.Product; /** * ClassName:ProductRepository <br/> * Function: TODO ADD FUNCTION. <br/> * Reason: TODO ADD REASON. <br/> * Date: 2016年8月20日 下午4:54:24 <br/> * @author 陈勋 * @version * @since JDK 1.7 * @see */ public interface ProductRepository extends SolrCrudRepository<Product, String>{ Iterable<Product> findByName(String name); }
资源文件配置:
spring.data.solr.zk-host=localhost:2181
测试
package com.chenxun; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import com.chenxun.solr.model.Product; import com.chenxun.solr.repository.ProductRepository; @RunWith(SpringRunner.class) @SpringBootTest public class ChenxunSolrApplicationTests { @Autowired private ProductRepository productRepository; @Test public void contextLoads() { productRepository.deleteAll(); long count=productRepository.count(); Assert.assertTrue("empty count", count==0); Product product=new Product(); product.setId("product-001"); product.setName("xxx"); Map<String,String> map=new HashMap<>(); map.put("key01", "abc"); map.put("key02", "123"); product.setMap(map); productRepository.save(product); Product product1=new Product(); product1.setId("product-002"); product1.setName("yyy"); Map<String,String> map1=new HashMap<>(); map1.put("key01", "abc1"); map1.put("key02", "1234"); product1.setMap(map1); productRepository.save(product1); count=productRepository.count(); Assert.assertTrue(count==2); Iterator<Product> it=productRepository.findByName("yyy").iterator(); while(it.hasNext()){ Assert.assertTrue( it.next().getId().equals("product-002")); } } }
到此大功告成,下一篇补上中文分词就OK了。
代码地址:https://github.com/ChenXun1989/chenxun-solr
发表评论
-
基于用户角色的细粒度validate
2016-08-26 19:24 796今天群里小伙伴有个需求,希望通过role来控制pojo字段 ... -
solr中文分词
2016-08-21 14:37 824solr中文分词。 solr5.0 自带一个中文分词 ... -
基于jquery把表单转成成json对象
2016-08-18 10:48 864最近前端框架修改,小伙伴希望能像以前写jsp一样使用 对象.属 ... -
springRest+cross跨域支持
2016-06-17 15:51 515最近一个接口项目需要支持跨域访问,基于cross实现。于是 ... -
关于office转换pdf完美终极解决方案
2016-03-12 11:54 7864最近项目上面有个需求,将用户上传的office格式转 ... -
关于ModelMap的小事
2016-03-08 18:54 1079今天对一个老系统框架的升级,需要修改原先响应的http报文 ... -
spring整合quartz任务调度框架使用
2016-02-26 14:57 453调度器 <bean autowire=" ... -
spring整合memcache
2016-02-26 14:50 449Xmemcached是基于java nio实现的高性能可扩 ... -
spring整合mongodb
2016-02-26 14:36 600MongoDB.是一个介于关 ... -
web项目整合solr服务实现全文检索
2016-02-26 14:24 5574Solr是一个高性能,采用Java5开发,Solr基于Lu ... -
java web权限管理
2015-12-18 14:29 1262之前项目采用spring4+security3做的权限管 ... -
spring4采用JSR349标准校验数据
2015-12-18 14:05 664Spring4.1内置支持了JSR349校验数据,相关配 ... -
spring4整合rest风格配置
2015-12-18 13:55 1188最近手头上有个新项目,打算采用前端js渲染+后端调用r ...
相关推荐
文件内含有solrcloud搭建需要的文件,内含:IK中文解析器、tomcat7.0、安装solr的文件solr4.10.3版本、zookeeper3.4.6版本。如需要请下载。也可以直接使用solr+tomcat搭建单机版的solr服务也可以。
centos下搭建好solrcloud集群,可以直接使用!!!!!!
### SolrCloud Windows环境下搭建详解 #### SolrCloud概述 SolrCloud是Apache Solr提供的一种分布式搜索解决方案,尤其适用于需要大规模容错、分布式索引和检索能力的应用场景。当索引数量较少时,通常无需启用...
3. **SolrCloud的搭建与使用** - **集群规划**:确定集群规模,包括Solr节点的数量和硬件配置,以及ZooKeeper集群的大小。 - **安装与配置**:分别安装Solr和ZooKeeper,配置SolrCloud模式,设置ZooKeeper的连接...
SolrCloud(solr 云)是Solr提供的分布式搜索方案,当你需要大规模,容错,分布式索引和检索能力时使用 SolrCloud。当一个系统的索引数据量少的时候是不需要使用SolrCloud的,当索引量很大,搜索请求并发很高,这时...
【SolrCloud搭建详解】 SolrCloud是Apache Solr的分布式版本,它利用Zookeeper进行集群管理和配置分发。 1. **搭建SolrCloud的前提** - 需要有Zookeeper集群,至少三个节点以保证高可用性。 - 至少四个Tomcat...
### SolrCloud 高可用集群搭建详解 #### 一、环境准备 为了构建一个SolrCloud高可用集群,首先需要准备好必要的软硬件环境。这里提到的环境包括操作系统、JDK、Zookeeper集群以及Solr集群。 **操作系统选择:** -...
SolrCloud高可用集群搭建是实现大规模、分布式搜索引擎的关键步骤,它通过集成Zookeeper来管理和协调各个Solr节点,确保数据的一致性和可用性。在搭建过程中,我们需要遵循一定的步骤和配置,以下是一些关键的知识点...
为三台远程Linux服务器搭建SolrCloud 本次目的是在tomcat以及zookeeper的基础上,搭建三台远程服务器的SolrCloud 工具:WinSCP,SecureCRT,apache-tomcat-7.0.62,solr-4.10.4,zookeeper-3.4.6 WARNING: 版本注意 ...
【SolrCloud基本概念与搭建】 SolrCloud是Apache Solr的一种分布式部署方式,从Solr 4.0版本开始引入,它结合了Zookeeper实现了一种高可用和可扩展的搜索引擎解决方案。SolrCloud基于Java开发,利用Lucene(一个强大...
如果需要处理大规模数据或构建高可用的搜索系统,可以利用SolrCloud搭建分布式集群。这需要配置Zookeeper以协调各个Solr节点,实现数据的自动分布和一致性。 6. **索引和查询**: 创建索引时,Solr支持多种数据...
solrcloud5结合zookeeper搭建、使用详解,是一部难得的好教程
例如,电子商务网站可以利用SolrCloud快速检索商品信息,新闻门户可以利用它对海量新闻内容进行实时索引和搜索,企业内部也可以搭建SolrCloud来统一管理各种结构化和非结构化数据。 总之,SolrCloud结合Zookeeper...
Window与Linux下搭建SolrCloud分布式集群环境 Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以...
SolrCloud4.9.0+Tomcat7+Zookeeper3.4.6搭建教程 SolrCloud是Apache Lucene项目下的一个基于分布式搜索引擎,通过将多个Solr实例组合成一个集群,可以实现高可用性和高性能的搜索系统。Tomcat是Apache软件基金会的...
### SolrCloud集群搭建步骤 #### 环境准备 - **操作系统**:CentOS 6.5 - **软件版本**: - JDK 7 - Apache Tomcat 7.0.57 - Zookeeper 3.4.6 - Solr 4.10.3 - **服务器配置**: - Zookeeper集群:3台服务器...
在Windows 7环境下搭建SolrCloud5.2.1、Tomcat7和Zookeeper3.4.6的集成环境是进行分布式搜索和索引管理的重要步骤。下面将详细介绍整个配置过程。 1. **软件环境配置** - **操作系统**: Windows 7 - **Tomcat**: ...