solr集群中配置文件是经常更新的,频率最高的也就是schema.xml和solrconfig.xml这两个配置文件了,对于更新配置文件之前,我们先了解一下集群项目结构

  由于在集群模式下,solrconfig.xml和schema.xml等配置文件都由Zookeeper集群管理,所以本地项目中只保留单一shard分片,各个collections分片保存位置是solr根目录下的server/solr/下,这个目录下有一个solr.xml文件,然后可以随便进入一个shard目录,可以看到只有一个data目录和一个core.properties文件,其中data目录存放solr备份的索引数据、core.properties文件通过vim编译可以看到这里面保存了shard序号,collections名称,核子节点的名称等等;另外官方文档也给出了对应的solrcloud本地的目录结构:

<solr-home-directory>/
  solr.xml
  core_name1/
    core.properties
    data/
  core_name2/
    core.properties
    data/

  这种结构和我们看到的是一样的

  根据以上的目录结构,所以我们更新配置必须将配置文件更新到Zookeeper集群才可以正常生效,之前在网上查过一些资料,好多都是无效或者过时的,用过一段时间的一个方法就是,首先登录zookeeper,删除原有的schema.xml文件,然后进行配置的上传,上传完成后并不是立即生效的,所以要依次重启solr集群,首先说明这个方法是有效的,但是感觉太麻烦;另外由于生产过程中,随便重启solr服务就和重启服务器一样会造成一定的损失或者风险,所以这种方式明显不合理,尽管我们一直在使用;实际上最好的解决方法在官方文档已经给出了,这个需要我们自己慢慢探索,这里解决方法如下:

  比如我们修改schema.xml配置文件之后,根本不用登录zookeeper删除原有文件,文件会自动覆盖,这里直接上传即可,命令如下:

./server/scripts/cloud-scripts/zkcli.sh -zkhost localhost: -cmd putfile /solr/configs/my_config/schema.xml ../configs/conf/schema.xml

  参数putfile指定配置文件在zookeeper上的绝对路径,这里注意是配置的路径,不是collection的路径,二者名称不相同,后面跟的是修改之后本地schema.xml配置文件的路径

  上传文件之后,我们通过solr admin管理界面都可以看到文件内容更新了,有2种方法可以查看到

  

  

  但是我们去Update、Query时会出错,浏览Schema字段时没有更新,很明显配置没有生效;接下来就是最重要的一步,我们找到官方文档的collections API位置,可以看到有一个如下的API:

  

  RELOAD这个API就是重新加载collection,不用重启solr,点击锚点可以看到具体使用解释如下:

  

  可以看到解释的很清楚了,经过上一步更新覆盖了配置文件之后,我们只需要curl或者访问以下链接即可:

http://localhost:8983/solr/admin/collections?action=RELOAD&name=my_collection

  访问之后,返回success,就重新加载核心成功了,全部正常使用

  以上对于更新collections配置文件的这个过程其实也是解决问题的一个过程,首先我们应该充分理解我们使用的工具或者框架具体是做什么的或者说哪方面是有优势的,以及更深的实现机制和原理,多去对比,这样遇到问题的时候才可以做到知道这个问题而不会不知所措;另外有些地方不合理,是为什么不合理,会给生产带来哪些不好的影响以及潜在的风险;然后带着这些问题去搜索,建议查看官方文档,特别是大数据方面直接在搜索引擎搜索出来的结果大多是互相抄袭、过时、甚至错误的,这个时候就要充分的去品味官方文档中的解释,然后去自己思考,这样慢慢的自己的知识就健全了,慢慢的自己的内功也就提升了,相对来说也就慢慢的进入了高手的行列;对于初学者不知所措是很正常的,个人认为重要的还是坚持锲而不舍的研究,只有这样才可以跟随技术的进步

  最后在学习工作中,总结一句话就是:永不放弃、知其然知其所以然、授人以鱼,不如授之以渔

Solr集群更新配置的方式的更多相关文章

  1. Solr 13 - 在URL地址栏中操作Solr集群 - 包括CRUD、别名、切割分片、更新配置

    目录 1 创建操作 1.1 创建collection 1.2 创建core 1.3 创建操作中的参数 2 删除操作 3 加载操作 4 查看操作 5 操作集合别名(操作成功, 但未查出区别) 6 切割分 ...

  2. solr集群的理解和配置(待更新)

    solr部署在tomcat下,solr集群依赖tomcat集群和zookeeper集群: zookeeper:1.对象注册和发放中心,实现异步调用. 2.配置中心.(solrConfig.xml,sc ...

  3. solrcloud(solr集群版)安装与配置

    1 Solr集群 1.1 什么是SolrCloud SolrCloud(solr 云)是Solr提供的分布式搜索方案,当你需要大规模,容错,分布式索引和检索能力时使用 SolrCloud.当一个系统的 ...

  4. spring boot下JedisCluster方式连接Redis集群的配置

    最近在使用springboot做项目,使用redis做缓存.在外网开发的时候redis服务器没有使用集群配置,所有就是用了RedisTemplate的方式进行连接redis服务器.但是项目代码挪到内网 ...

  5. Redis 单例、主从模式、sentinel 以及集群的配置方式及优缺点对比(转)

    摘要: redis作为一种NoSql数据库,其提供了一种高效的缓存方案,本文则主要对其单例,主从模式,sentinel以及集群的配置方式进行说明,对比其优缺点,阐述redis作为一种缓存框架的高可用性 ...

  6. 在Linux上使用Nginx为Solr集群做负载均衡

    在Linux上使用Nginx为Solr集群做负载均衡 在Linux上搭建solr集群时需要用到负载均衡,但测试环境下没有F5 Big-IP负载均衡交换机可以用,于是先后试了weblogic的proxy ...

  7. Solr集群常用的操作总结

    之前搭建过SolrCloud和Solr单机版本,另外还有很多对Solr配置文件以及核心的操作,以下主要总结Solr集群中的常用操作,即在配置文件中正确设置ZK_HOST参数并且Zookeeper正确启 ...

  8. 搭建Solr集群的推荐方案

    之前介绍过2篇SolrCloud的部署流程,第一个是使用安装脚本的方式进行抽取安装,启动比较方便,但是会创建多个目录,感觉比较乱:第二个是官方教程上提供的方法,使用比较简单,直接释放压缩包即可,并且启 ...

  9. Solr集群的搭建以及使用(内涵zookeeper集群的搭建指南)

    1   什么是SolrCloud SolrCloud(solr 云)是Solr提供的分布式搜索方案,当你需要大规模,容错,分布式索引和检索能力时使用 SolrCloud.当一个系统的索引数据量少的时候 ...

随机推荐

  1. RTX二次开发(一)(基于ASP.NET)

    腾讯通RTX是(Real Time eXpert)是腾讯公司推出的企业级实时通信平台,致力于帮助企业提高运作效率.降低沟通成本.拓展商业机会,是一种高度可管理.低成本.易部署的IT平台.RTX集成了丰 ...

  2. NHibernate概念

    SessionFactory (NHibernate.ISessionFactory) 对属于单一数据库的编译过的映射文件的一个线程安全的,不可变的缓存快照.它是Session的工厂,是Connect ...

  3. SRM 513 2 1000CutTheNumbers(状态压缩)

    SRM 513 2 1000CutTheNumbers Problem Statement Manao has a board filled with digits represented as St ...

  4. hdu.1429.胜利大逃亡(续)(bfs + 0101011110)

    胜利大逃亡(续) Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total S ...

  5. PHP协程 详解

    [开源中国] PHP 使用协同程序实现合作多任务 [风雪之隅] 在PHP中使用协程实现多任务调度

  6. Javascript高级程序设计——BOM(浏览器对象模型)

    BOM(浏览器对象模型),它提供了独立于内容而与浏览器窗口进行交互的对象.BOM由一系列相关的对象构成.一.window对象      window对象表示整个浏览器窗口,但不必表示其中包含的内容.W ...

  7. plsql 建立oracle作业

    --.plsql中学习job --学习job --建表 create table test_job(para_date date); commit; insert into test_job valu ...

  8. java web 相对路径中已/开头和不已/开头的区别

    通俗的讲,有/会从跟目录开始算,没有会从当前目录开始算 1.前台页面 ​页面中向服务器页面请求静态资源且没有指定<base href="<%=basePath%>" ...

  9. 深入理解Java虚拟机之读书笔记四 性能监控与故障处理工具

    JDK的bin目录下存在很多有效的命令行工具,它们就是jdk\lib\toos.jar类库的封装. 一.jps:虚拟机进程状况工具,查询出LVMID. 二.jstat:虚拟机统计信息监视工具, 三.j ...

  10. iOS开发——高级篇——Objective-C特性:Runtime

    Objective-C是基于C语言加入了面向对象特性和消息转发机制的动态语言,这意味着它不仅需要一个编译器,还需要Runtime系统来动态创建类和对象,进行消息发送和转发.下面通过分析Apple开源的 ...