`
LoveLZY
  • 浏览: 57340 次
  • 性别: Icon_minigender_1
博客专栏
Group-logo
从零编写RPC框架
浏览量:0
社区版块
存档分类
最新评论

solrcloud搭建

阅读更多
   群里小伙伴需要一个solrcloud的解决案例。正好好久没碰过solr了。决定写个demo,顺便重新熟悉下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
 

分享到:
评论

相关推荐

    solrcloud搭建需要的文件

    文件内含有solrcloud搭建需要的文件,内含:IK中文解析器、tomcat7.0、安装solr的文件solr4.10.3版本、zookeeper3.4.6版本。如需要请下载。也可以直接使用solr+tomcat搭建单机版的solr服务也可以。

    centos搭建solrcloud集群

    centos下搭建好solrcloud集群,可以直接使用!!!!!!

    solrcloud windows 环境搭建

    ### SolrCloud Windows环境下搭建详解 #### SolrCloud概述 SolrCloud是Apache Solr提供的一种分布式搜索解决方案,尤其适用于需要大规模容错、分布式索引和检索能力的应用场景。当索引数量较少时,通常无需启用...

    SolrCloud集群搭建和使用步骤

    3. **SolrCloud的搭建与使用** - **集群规划**:确定集群规模,包括Solr节点的数量和硬件配置,以及ZooKeeper集群的大小。 - **安装与配置**:分别安装Solr和ZooKeeper,配置SolrCloud模式,设置ZooKeeper的连接...

    SolrCloud集群搭建教程

    SolrCloud(solr 云)是Solr提供的分布式搜索方案,当你需要大规模,容错,分布式索引和检索能力时使用 SolrCloud。当一个系统的索引数据量少的时候是不需要使用SolrCloud的,当索引量很大,搜索请求并发很高,这时...

    zookeeper 集群搭建1

    【SolrCloud搭建详解】 SolrCloud是Apache Solr的分布式版本,它利用Zookeeper进行集群管理和配置分发。 1. **搭建SolrCloud的前提** - 需要有Zookeeper集群,至少三个节点以保证高可用性。 - 至少四个Tomcat...

    solrcloud高可用集群搭建

    ### SolrCloud 高可用集群搭建详解 #### 一、环境准备 为了构建一个SolrCloud高可用集群,首先需要准备好必要的软硬件环境。这里提到的环境包括操作系统、JDK、Zookeeper集群以及Solr集群。 **操作系统选择:** -...

    solrcloud 高可用集群搭建

    SolrCloud高可用集群搭建是实现大规模、分布式搜索引擎的关键步骤,它通过集成Zookeeper来管理和协调各个Solr节点,确保数据的一致性和可用性。在搭建过程中,我们需要遵循一定的步骤和配置,以下是一些关键的知识点...

    在远程Linux服务器搭建SolrCloud

    为三台远程Linux服务器搭建SolrCloud 本次目的是在tomcat以及zookeeper的基础上,搭建三台远程服务器的SolrCloud 工具:WinSCP,SecureCRT,apache-tomcat-7.0.62,solr-4.10.4,zookeeper-3.4.6 WARNING: 版本注意 ...

    solrCloud基本概念和搭建1

    【SolrCloud基本概念与搭建】 SolrCloud是Apache Solr的一种分布式部署方式,从Solr 4.0版本开始引入,它结合了Zookeeper实现了一种高可用和可扩展的搜索引擎解决方案。SolrCloud基于Java开发,利用Lucene(一个强大...

    最新版linux solr-7.7.3.tgz

    如果需要处理大规模数据或构建高可用的搜索系统,可以利用SolrCloud搭建分布式集群。这需要配置Zookeeper以协调各个Solr节点,实现数据的自动分布和一致性。 6. **索引和查询**: 创建索引时,Solr支持多种数据...

    solrcloud5结合zookeeper应用视频教程

    solrcloud5结合zookeeper搭建、使用详解,是一部难得的好教程

    solrcloud.rar

    例如,电子商务网站可以利用SolrCloud快速检索商品信息,新闻门户可以利用它对海量新闻内容进行实时索引和搜索,企业内部也可以搭建SolrCloud来统一管理各种结构化和非结构化数据。 总之,SolrCloud结合Zookeeper...

    Window与Linux下搭建SolrCloud分布式集群环境

    Window与Linux下搭建SolrCloud分布式集群环境 Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以...

    SolrCloud4.9.0+tomcat7+zookeeper-3.4.6搭建教程

    SolrCloud4.9.0+Tomcat7+Zookeeper3.4.6搭建教程 SolrCloud是Apache Lucene项目下的一个基于分布式搜索引擎,通过将多个Solr实例组合成一个集群,可以实现高可用性和高性能的搜索系统。Tomcat是Apache软件基金会的...

    SolrCloud文档

    ### SolrCloud集群搭建步骤 #### 环境准备 - **操作系统**:CentOS 6.5 - **软件版本**: - JDK 7 - Apache Tomcat 7.0.57 - Zookeeper 3.4.6 - Solr 4.10.3 - **服务器配置**: - Zookeeper集群:3台服务器...

    solrCloud5.2.1 + tomcat7 + zookeeper3.4.6

    在Windows 7环境下搭建SolrCloud5.2.1、Tomcat7和Zookeeper3.4.6的集成环境是进行分布式搜索和索引管理的重要步骤。下面将详细介绍整个配置过程。 1. **软件环境配置** - **操作系统**: Windows 7 - **Tomcat**: ...

Global site tag (gtag.js) - Google Analytics