solrcloud搭建_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > solrcloud搭建

solrcloud搭建

 2016/8/21 5:31:36  LoveLZY  程序员俱乐部  我要评论(0)
  • 摘要:群里小伙伴需要一个solrcloud的解决案例。正好好久没碰过solr了。决定写个demo,顺便重新熟悉下solr。solr版本:5.0solr链接:http://archive.apache.org/dist/lucene/solr/5.0.0/jdk版本:1.70+windows环境安装:cdD:\app\solr-5.0.0\binsolr.cmd-c-zlocalhost:2181-p8983cdD:\app\solr-5.0.0-01\binsolr.cmd-c-zlocalhost
  • 标签:
   群里小伙伴需要一个solrcloud的解决案例。正好好久没碰过solr了。决定写个demo,顺便重新熟悉下solr。
  solr版本:5.0
  solr链接:http://archive.apache.org/dist/lucene/solr/5.0.0/
  jdk版本:1.70+
  windows环境安装:
 
class="java" name="code">
  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);
	
	
	 
	 

}



  到此大功告成,下一篇补上中文分词就OK了。
  代码地址:https://github.com/ChenXun1989/chenxun-solr
 

  • 相关文章
发表评论
用户名: 匿名