准备

  • JDK 1.8.0.181
  • solr 7.5.0
  • zookeeper 3.4.13

安装步骤

zookeeper集群安装

  1. 下载zookeeper http://mirror.bit.edu.cn/apache/zookeeper
  2. 解压缩zookeeper-3.4.13.tar.gz
    cd /usr/local/app
    tar -xf zookeeper-3.4.13.tar.gz
    mv zookeeper-3.4.13 zookeeper
    
  3. 修改zoo.cfg配置文件
    cd /usr/local/app/zookeeper/conf
    vi zoo.cfg
    --------------------------------
    tickTime=2000
    initLimit=10
    syncLimit=5
    dataDir=/usr/local/app/zookeeper/data
    clientPort=2181
    # server.1中的1位器群机器zookeeper服务的myid
    server.1=172.30.1.31:2888:3888
    server.2=172.30.1.32:2888:3888
    server.3=172.30.1.33:2888:3888
    --------------------------------
    
  4. data目录创建myid文件
    cd /usr/local/app/zookeeper/
    mkdir data
    vi myid
    --------------------------------
    # 第二台机器为2,依次类推
    1
    --------------------------------
    
  5. 启动服务
    ./bin/zkServer.sh start
    
  6. 集群状态检查
    # 带所有服务启动命令之后执行
    ./bin/zkServer.sh start
    

solrcloud安装

  1. 单机安装所有节点服务,见solr单机版安装
  2. 创建chroot
    # 登录任意一台solr节点服务器
    cd /opt/solr/bin/
    ./solr zk mkroot solr -z 172.30.1.31:2181,172.30.1.32:2181,172.30.1.33:2181
    
  3. solr集群配置
    # 每个节点执行
    vi /etc/default/solr.in.sh
    --------------------------------------------
    # 修改java运行环境
    SOLR_JAVA_HOME="/usr/local/jdk1.8.0_31"
    # 修改solrcloud配置
    ZK_HOST="172.30.1.32:2181,172.30.1.33:2181/test"
    # 修改内存
    SOLR_JAVA_MEM="-Xms512m -Xmx512m"
    --------------------------------------------
    
  4. 创建collection
    # 登录任意节点执行
    cd /opt/solr/bin
    # -c collection名称
    # -shards 分片数量
    # -replicationFactor 副本数量
    ./solr create_collection -c second -d _default -shards 2 -replicationFactor 3
    
  5. 修改字段配置
    1. 下载zookeeper管理的配置文件

      # -d 配置文件下载目标目录
      # -n chroot名称
      # -z zookeeper集群地址
      /opt/solr/bin/solr zk downconfig -n second -d ./
    2. 修改下载的配置文件
      vi managed-schema
      -----------------------------------------------------------
      <?xml version="1.0" encoding="UTF-8" ?>
      <!-- Solr managed schema - automatically generated - DO NOT EDIT -->
      <schema name="default-config" version="1.6"><!-- 主键定义 --><uniqueKey>id</uniqueKey><!-- 字段类型定义 --><fieldType name="binary" class="solr.BinaryField"/><fieldType name="boolean" class="solr.BoolField" sortMissingLast="true"/><fieldType name="booleans" class="solr.BoolField" sortMissingLast="true" multiValued="true"/><fieldType name="pdate" class="solr.DatePointField" docValues="true"/><fieldType name="pdates" class="solr.DatePointField" docValues="true" multiValued="true"/><fieldType name="pdouble" class="solr.DoublePointField" docValues="true"/><fieldType name="pdoubles" class="solr.DoublePointField" docValues="true" multiValued="true"/><fieldType name="pfloat" class="solr.FloatPointField" docValues="true"/><fieldType name="pfloats" class="solr.FloatPointField" docValues="true" multiValued="true"/><fieldType name="pint" class="solr.IntPointField" docValues="true"/><fieldType name="pints" class="solr.IntPointField" docValues="true" multiValued="true"/><fieldType name="plong" class="solr.LongPointField" docValues="true"/><fieldType name="plongs" class="solr.LongPointField" docValues="true" multiValued="true"/><fieldType name="random" class="solr.RandomSortField" indexed="true"/><fieldType name="string" class="solr.StrField" sortMissingLast="true" docValues="true"/><fieldType name="strings" class="solr.StrField" sortMissingLast="true" docValues="true" multiValued="true"/><fieldType name="text_general" class="solr.TextField" positionIncrementGap="100" multiValued="true"><analyzer type="index"><tokenizer class="solr.StandardTokenizerFactory"/><filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/><filter class="solr.LowerCaseFilterFactory"/></analyzer><analyzer type="query"><tokenizer class="solr.StandardTokenizerFactory"/><filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/><filter class="solr.SynonymGraphFilterFactory" expand="true" ignoreCase="true" synonyms="synonyms.txt"/><filter class="solr.LowerCaseFilterFactory"/></analyzer></fieldType><fieldType name="text_ik" class="solr.TextField"><analyzer type="index"><tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" conf="ik.conf" useSmart="false"/><filter class="solr.LowerCaseFilterFactory"/></analyzer><analyzer type="query"><tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" conf="ik.conf" useSmart="true"/><filter class="solr.LowerCaseFilterFactory"/></analyzer></fieldType><!-- 版本必须 --><field name="_version_" type="plong" indexed="false" stored="false"/><!-- id --><field name="id" type="string" multiValued="false" indexed="true" required="true" stored="true"/><!-- 姓名 --><field name="name" type="string" indexed="true" stored="true"/><!-- 简介 分词 --><field name="intro" type="text_ik" indexed="true" stored="true"/><!-- 爱好 多选 --><field name="hobby" type="strings" multiValued="true" indexed="false" stored="true"/><!-- 出生日期 --><field name="birthday" type="pdate" indexed="true" stored="true"/>
      </schema>
      
    3. 上传配置文件到zookeeper
      /opt/solr/bin/solr zk upconfig -n demo -d ./
      
    4. 重启集群

客户端开始使用

  • springboot 2.1.1
  • solr 7.5

导入依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-solr</artifactId>
</dependency>

application.properties配置

spring.data.solr.zk-host=172.30.1.31:2181,172.30.1.32:2181,172.30.1.33:2181/solr
spring.data.solr.repositories.enabled=true

entity实体

/** Copyright 2014-2018 nickboyer.cn.* All rights reserved.*/
package cn.nickboyer.demo.solr.controller;import org.apache.solr.client.solrj.beans.Field;import java.util.Date;
import java.util.List;/*** @author Kang.Y* @Date 15:09 2018/12/11* @since 1.8*/
public class Person {@Fieldprivate String id;@Fieldprivate String name;@Fieldprivate String intro;@Fieldprivate List<String> hobby;@Fieldprivate Date birthday;@Overridepublic String toString() {return "Person{" +"id='" + id + '\'' +", name='" + name + '\'' +", intro='" + intro + '\'' +", hobby=" + hobby +", birthday=" + birthday +'}';}get/set 略...
}

service调用(增删改查、搜索)

/** Copyright 2014-2018 nickboyer.cn.* All rights reserved.*/
package cn.nickboyer.demo.solr.controller;import org.apache.commons.lang3.StringUtils;
import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.client.solrj.response.UpdateResponse;
import org.apache.solr.common.SolrDocument;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;import java.util.List;
import java.util.UUID;/*** @author Kang.Y* @Date 15:08 2018/12/11* @since 1.8*/
@RestController
public class DemoController {@Autowiredprivate SolrClient solrClient;@PostConstructpublic void init() {if (solr instanceof CloudSolrClient) {((CloudSolrClient) solr).setDefaultCollection("second");}}/*** 新增/修改** @param person* @return* @throws Exception*/@RequestMapping("add")public Object add(@RequestBody Person person) throws Exception {String id = UUID.randomUUID().toString().replaceAll("-", "");if (StringUtils.isEmpty(person.getId())) {person.setId(id);}UpdateResponse updateResponse = solrClient.addBean(person);solrClient.commit();return "{\"QTime\":" + updateResponse.getQTime() + "}";}/*** 删除** @param person* @return* @throws Exception*/@RequestMapping("delete")public Object delete(@RequestBody Person person) throws Exception {UpdateResponse updateResponse = solrClient.deleteById(person.getId());return "{\"QTime\":" + updateResponse.getQTime() + "}";}/*** 查询** @param person* @return* @throws Exception*/@RequestMapping("select")public Object selectById(@RequestBody Person person) throws Exception {SolrDocument document = solrClient.getById(person.getId());return document;}/*** 搜索** @param person* @return* @throws Exception*/@RequestMapping("search")public Object selects(@RequestBody Person person) throws Exception {SolrQuery query = new SolrQuery();if (StringUtils.isNotEmpty(person.getIntro())) {query.set("q", "intro:" + person.getIntro());}// 参数sort,设置返回结果的排序规则query.setSort("id", SolrQuery.ORDER.desc);// 设置分页参数query.setStart(0);// 每一页多少值query.setRows(10);// 获取查询结果QueryResponse response = solrClient.query(query);// 得到实体对象List<Person> tmpLists = response.getBeans(Person.class);return tmpLists;}
}

Solrcloud安装与使用相关推荐

  1. Apache SolrCloud安装

    1.介绍  SolrCloud通过ZooKeeper集群来进行协调,使一个索引进行分片,各个分片可以分布在不同的物理节点上,多个物理分片组成一个完成的索引Collection.SolrCloud自动支 ...

  2. Solr搜索引擎 — SolrCloud安装和集群配置

    搞定了一切的一切之后下一步就是正式使用了,但是之前介绍的都是在单台服务器上进行的部署,如果在生产环境出现了单台故障怎么办呢?提供稳定性和性能的最直观的方式就是集群,solr官方提供了cloud的集群方 ...

  3. linux solrcloud zookeeper分布式集群部署

    SolrCloud 通过 ZooKeeper 集群来进行协调,使一个索引进行分片,各个分片可以分布在不同的物理节点上,多个物理分片组成一个完成的索引 Collection.SolrCloud 自动支持 ...

  4. java调用 solr集群_Solr集群安装Version5.5.2(cloud模式)

    Solr安装cloud模式,基于Solr的安装版本为5.5.2. 安装规划 SolrIP/机器名安装软件运行进程zdh-7solrjar zdh-9solrjar zookeeper zdh-7:21 ...

  5. Solr集群安装Version5.5.2(cloud模式)

    Solr安装cloud模式,基于Solr的安装版本为5.5.2. 安装规划 Solr IP/机器名 安装软件 运行进程 zdh-7 solr jar zdh-9 solr jar zookeeper ...

  6. Apache Ranger源码编译及使用

    Ranger源码编译.使用手册 1 Ranger简介 Apache Ranger提供一个集中式安全管理框架,它可以对Hadoop生态的组件如Hive,Hbase进行细粒度的数据访问控制.通过操作Ran ...

  7. 干货 | 携程机票大数据架构最佳实践

    本文转载自 携程技术中心(ctriptech) 公众号,本文PPT请点击下面 阅读原文 获取 作者简介 许鹏,携程机票大数据基础平台Leader,负责平台的构建和运维.深度掌握各种大数据开源产品,如S ...

  8. ESHOP项目配置清单(完善中,敬请期待...)20191126

    ESHOP项目配置清单 ESHOP项目配置中心 主机 虚拟机VMware 安装JDK 安装Tomcat 安装Mysql 安装Zookeeper 安装Redis单机 安装Redis-Cluster,配置 ...

  9. solr安装-tomcat+solrCloud构建稳健solr集群

    solrCloud的搭建可以有两种方式:使用solr内嵌的jetty来搭建:使用外部web容器tomcat来搭建.对于使用jett来搭建参考solr官方的手册照着做肯定ok,下面我主要讲的是如何使用t ...

最新文章

  1. jquery过滤HTML标签方法
  2. Snapshot Volume 操作 - 每天5分钟玩转 OpenStack(58)
  3. AIX存储管理(二)物理卷管理
  4. 京东云金山云合并确有其事,或拉开云计算兼并序幕
  5. in-nan(ind)_NaN16 Constant in Julia
  6. A fully managed website and blog hosting platform
  7. [小工具] 文本形式转储二进制
  8. es6中的let声明变量与es5中的var声明变量的区别,局部变量与全局变量
  9. Atitit 获取剪贴板内容 目录 1.1. ava提供两种类型的剪贴板:系统的和本地的. 1 1.2. Atitit 剪贴板数据类型 DataFlavor 1 1.3. Atitit 获取剪贴板内
  10. 【信息系统项目管理师】项目管理十大知识领域速记
  11. 应用安全系列之二十六:应用层DOS攻击
  12. 28岁转行程序员?别想了、没戏。事实真就如此残酷?
  13. Python fractions模块 —— 分数相关函数
  14. 视频画面裁剪怎么弄?分享几个实用技巧
  15. 软考(软件设计师知识点) --法律法规
  16. [计算机网络]HTTP、UDP、TCP协议
  17. 十一、决策树和随机森林
  18. 计算机专业独显好还是集显好,笔记本选购指南:笔记本电脑核显好还是独显好?...
  19. VRay Next for SketchUp室内局部空间渲染
  20. $.messager的使用笔记

热门文章

  1. idea 2020 2021 maven不能下载jar包解决办法
  2. 三星 SCX-4521NS 网络打印机 在XP 下 强行 设置 安装
  3. CCF A期刊和会议列表
  4. 物联网 + 区块链系列(二):区块链赋能物联网设备
  5. Linux $ROOT 用户无权限操作文件/目录问题
  6. python编写一个将十进制转换为二进制的函数
  7. Linux/CentOS防CC攻击脚本
  8. 开源的OA办公系统:企业的考勤,真的有那么难管吗?
  9. Linux命令--nbtstat--使用/实例
  10. 一些做扫描识别的第三方控件