日萌社

人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新)


搜索引擎:Elasticsearch、Solr、Lucene

  • ELK中的ES:Elasticsearch
  • SolrCloud 的搭建、使用
  • Solr 高亮显示
  • Spring Data Solr 使用
  • Solr的安装与配置
  • Solr 原理、API 使用
  • Lucene 原理、API使用
  • Lucene 得分算法
1.SolrCloud(solr 云)是 Solr 提供的分布式搜索方案,当你需要大规模、容错、分布式索引和检索能力时使用 SolrCloud。当一个系统的索引数据量少的时候是不需要使用 SolrCloud的,当索引量很大,搜索请求并发很高,这时需要使用 SolrCloud 来满足这些需求。SolrCloud 是基于 Solr 和Zookeeper的分布式搜索方案,它的主要思想是使用 Zookeeper作为集群的配置信息中心。它有几个特色功能:1.集中式的配置信息2.自动容错3.近实时搜索4.查询时自动负载均衡2.SolrCloud系统架构

 1.物理结构:三个 Solr 实例( 每个实例包括两个 Core),组成一个 SolrCloud。2.逻辑结构索引集合包括两个 Shard(shard1 和 shard2),shard1 和 shard2 分别由三个 Core 组成,其中一个 Leader 两个 Replication,Leader 是由 zookeeper 选举产生,zookeeper 控制每个shard上三个 Core 的索引数据一致,解决高可用问题。用户发起索引请求分别从 shard1 和 shard2 上获取,解决高并发问题。1.Collection  Collection 在 SolrCloud 集群中是一个逻辑意义上的完整的索引结构。它常常被划分为一个或多个 Shard(分片),它们使用相同的配置信息。比如:针对商品信息搜索可以创建一个 collection。collection=shard1+shard2+....+shardX2.Core 每个 Core 是 Solr 中一个独立运行单位,提供 索引和搜索服务。一个 shard 需要由一个Core 或多个 Core 组成。由于 collection 由多个 shard 组成所以 collection 一般由多个 core 组成。3.Master 或 SlaveMaster 是 master-slave 结构中的主结点(通常说主服务器),Slave 是 master-slave 结构中的从结点(通常说从服务器或备服务器)。同一个 Shard 下 master 和 slave 存储的数据是一致的,这是为了达到高可用目的。4.ShardCollection 的逻辑分片。每个 Shard 被化成一个或者多个 replication,通过选举确定哪个是 Leader。

1.分片的目的:可以进行拓容。比如一个分片对应一个2个G的core,那么增加一个分片,可以对应多的一个2个G的core
2.core:一个core代表Solr中的一个数据库“collection1”
3.Master 是 master-slave 结构中的主节点(主服务器),Slave 是 master-slave 结构中的从节点(从服务器)。在同一个 分片(Shard) 下 master主节点 和 slave从节点 存储的数据是相同的,这是为了达到高可用性。


搭建SolrCloud

1.搭建要求:Zookeeper 作为集群的管理工具1.集群管理:容错、负载均衡。2.配置文件的集中管理3.集群的入口:需要实现 zookeeper 高可用,需要搭建zookeeper集群。建议是奇数节点。需要三个 zookeeper 服务器。搭建 solr 集群需要 7 台服务器(搭建伪分布式,建议虚拟机的内存 1G 以上):需要三个 zookeeper 节点需要四个 tomcat 节点 2.环境准备CentOS-6.5-i386-bin-DVD1.isojdk-7u72-linux-i586.tar.gzapache-tomcat-7.0.47.tar.gzzookeeper-3.4.6.tar.gzsolr-4.10.3.tgz3.步骤:1.搭建Zookeeper集群(我们在上一小节已经完成)2.将已经部署完solr 的tomcat的上传到linux3.在linux中创建文件夹 /usr/local/solr-cloud  创建4个tomcat实例

启动集群

1.启动每个 tomcat 实例。要保证 zookeeper 集群是启动状态。如果你想让某个文件夹下都可以执行,使用以下命令实现:chmod -R 777 solr-cloud
2.访问集群:地址栏输入 192.168.25.140:8180/solr 或 192.168.25.140:8280/solr都可以看到Solr集群版的界面,下图表示的是,一个主节点 ,三个从节点。


SpringDataSolr连接SolrCloud

在SolrJ中提供一个叫做CloudSolrServer的类,它是SolrServer的子类,用于连接solrCloud。
它的构造参数就是zookeeper的地址列表,另外它要求要指定defaultCollection属性(默认的 collection名称)。
我们现在修改springDataSolrDemo工程的配置文件 ,把原来的solr-server注销,替换为CloudSolrServer。
指定构造参数为地址列表,设置默认 collection名称。<!-- solr服务器地址<solr:solr-server id="solrServer" url="http://192.168.25.129:8080/solr" />-->  <bean id="solrServer" class="org.apache.solr.client.solrj.impl.CloudSolrServer"><constructor-arg value="192.168.25.140:2181,192.168.25.140:2182,192.168.25.140:2183" /><property name="defaultCollection" value="collection1"></property></bean>

集群分片设置

创建新的 Collection 进行分片处理。
在浏览器输入以下地址,可以按照我们的要求  创建新的Collection: http://192.168.25.140:8180/solr/admin/collections?action=CREATE&name=collection2&numShards=2&replicationFactor=2参数:action=CREATE:表示创建新的 Collection集合name=collection2:表示创建新的 Collection集合的名字是collection2numShards=2:代表的是SolrCloud的逻辑结构。表示创建的shard逻辑分片数为2。 replicationFactor=2:代表的是SolrCloud的物理结构。表示创建的shard逻辑分片数的备份数为2,那么其中一个为主,另外一个为备。


搭建Solr集群:SolrCloud

1.搭建 zookeeper 集群:建议是奇数节点,则至少需要三个 zookeeper 服务器。
2.搭建 solr 集群:此处搭建伪集群,都在同一台虚拟机上,首先开启四个 tomcat。环境准备:apache-tomcat-7.0.47.tar.gz 和 solr-4.10.3.tgz3.mkdir /usr/local/solr-cloud
4./root/apache-tomcat-7.0.52/webapps/ 目录下 已部署好 solr-4.10.3工程,那么把tomcat拷贝4份:cp -r apache-tomcat-7.0.52 /usr/local/solr-cloud/tomcat-1cp -r apache-tomcat-7.0.52 /usr/local/solr-cloud/tomcat-2cp -r apache-tomcat-7.0.52 /usr/local/solr-cloud/tomcat-3cp -r apache-tomcat-7.0.52 /usr/local/solr-cloud/tomcat-45.mkdir /usr/local/solrhomes
6./root 目录下 配置好 solrhome,然后把 solrhome文件夹 拷贝4份:cp -r solrhome /usr/local/solrhomes/solrhome-1cp -r solrhome /usr/local/solrhomes/solrhome-2cp -r solrhome /usr/local/solrhomes/solrhome-3cp -r solrhome /usr/local/solrhomes/solrhome-47.修改solrhome的绝对路径:1./usr/local/solr-cloud/tomcat-1/webapps/solr-4.10.3/WEB-INF/web.xml:修改 <env-entry-value>/usr/local/solrhomes/solrhome-1</env-entry-value>2./usr/local/solr-cloud/tomcat-2/webapps/solr-4.10.3/WEB-INF/web.xml:修改 <env-entry-value>/usr/local/solrhomes/solrhome-2</env-entry-value>3./usr/local/solr-cloud/tomcat-3/webapps/solr-4.10.3/WEB-INF/web.xml:修改 <env-entry-value>/usr/local/solrhomes/solrhome-3</env-entry-value>4./usr/local/solr-cloud/tomcat-4/webapps/solr-4.10.3/WEB-INF/web.xml:修改 <env-entry-value>/usr/local/solrhomes/solrhome-4</env-entry-value>8.修改每个tomcat/conf/server.xml下的三个端口:1.<Server port="xxxx" shutdown="SHUTDOWN">:用来关闭TOMCAT服务的端口。  2.<Connector port="xxxx" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />:负责建立HTTP连接。在通过浏览器访问Tomcat服务器的Web应用时,使用的就是这个连接器。3.<Connector port="xxxx" protocol="AJP/1.3" redirectPort="8443" />:负责和其他的HTTP服务器建立连接。在把Tomcat与其他HTTP服务器集成时,就需要用到这个连接器。4./usr/local/solr-cloud/tomcat-1/conf/server.xml:<Server port="8105" shutdown="SHUTDOWN">   <Connector port="8180" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /><Connector port="8109" protocol="AJP/1.3" redirectPort="8443" />5./usr/local/solr-cloud/tomcat-2/conf/server.xml:<Server port="8205" shutdown="SHUTDOWN">   <Connector port="8280" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /><Connector port="8209" protocol="AJP/1.3" redirectPort="8443" />6./usr/local/solr-cloud/tomcat-3/conf/server.xml:<Server port="8305" shutdown="SHUTDOWN">   <Connector port="8380" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /><Connector port="8309" protocol="AJP/1.3" redirectPort="8443" />7./usr/local/solr-cloud/tomcat-4/conf/server.xml:<Server port="8405" shutdown="SHUTDOWN">   <Connector port="8480" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /><Connector port="8409" protocol="AJP/1.3" redirectPort="8443" />9.修改每个tomcat/bin/catalina.sh:1.目的:让每个Tomcat找到zookeeper集群中的每个zookeeper2.catalina.sh中配置位置:把此配置修改到第234行3.catalina.sh中修改的配置内容的格式:JAVA_OPTS="-DzkHost=zookeeperIP:端口"4.catalina.sh中修改的配置内容:JAVA_OPTS="-DzkHost=192.168.25.128:2181,192.168.25.128:2182,192.168.25.128:2183"5.JAVA_OPTS:用来设置JVM相关运行参数的变量,此配置用于在tomcat启动时找到 zookeeper集群中的任意一个zookeeper6.此处zookeeper集群所在的虚拟机:192.168.25.1287.此处每个Tomcat所在的虚拟机:192.168.25.1338./usr/local/solr-cloud/tomcat-1/bin/catalina.sh:JAVA_OPTS="-DzkHost=192.168.25.128:2181,192.168.25.128:2182,192.168.25.128:2183"9./usr/local/solr-cloud/tomcat-2/bin/catalina.sh:JAVA_OPTS="-DzkHost=192.168.25.128:2181,192.168.25.128:2182,192.168.25.128:2183"10./usr/local/solr-cloud/tomcat-3/bin/catalina.sh:JAVA_OPTS="-DzkHost=192.168.25.128:2181,192.168.25.128:2182,192.168.25.128:2183"                                                                                                                                                                                                                                                                                                                                                                                                                                                                         44./usr/local/solr-cloud/tomcat-4/bin/catalina.sh:JAVA_OPTS="-DzkHost=192.168.25.128:2181,192.168.25.128:2182,192.168.25.128:2183"10.每个solrhome目录下的solr.xml文件中配置tomcat的IP和端口,用于solr和tomcat连接:目的:solr集群中的每个solr关联一个tomcat。1./usr/local/solrhomes/solrhome-1/solr.xml<str name="host">192.168.25.133</str><int name="hostPort">8180</int>2./usr/local/solrhomes/solrhome-2/solr.xml<str name="host">192.168.25.133</str><int name="hostPort">8280</int>3./usr/local/solrhomes/solrhome-3/solr.xml<str name="host">192.168.25.133</str><int name="hostPort">8380</int>4./usr/local/solrhomes/solrhome-4/solr.xml<str name="host">192.168.25.133</str><int name="hostPort">8480</int>注意:每个solrhome目录下的solr.xml文件中还配置有<str name="hostContext">${hostContext:solr}</str>,表示访问的主机上下文的名称是solr,那么便要求tomcat/webapps目录下的solr项目名(文件夹名)必须是solr。  那么项目访问的solr服务器的地址便实际是192.168.25.133:8180/solr/collection1,默认访问的是collection1数据库。11.使用 solr 中的 zkcli.sh工具 把 solrhome/collection1/conf配置目录 上传到 zookeeper集群中的每个zookeeper:目的:让 zookeeper 统一管理配置文件。 1.tar -zxvf solr-4.10.3.tgz.tgz2.cd solr-4.10.3/example/scripts/cloud-scripts 3.所执行命令的格式:./zkcli.sh -zkhost zookeeper的IP:端口 -cmd upconfig -confdir 任意某个solrhome下的collection1/conf配置目录 -confname myconf参数解释:-zkhost:指定zookeeper地址列表(IP:端口)-cmd:指定命令。upconfig 为上传配置的命令-confdir:solrhome下的collection1/conf配置目录-confname:配置名称4.执行命令之前保证zookeeper启动了5.所执行的命令:./zkcli.sh -zkhost 192.168.25.128:2181,192.168.25.128:2182,192.168.25.128:2183 -cmd upconfig -confdir /usr/local/solrhomes/solrhome-1/collection1/conf -confname myconf12.启动solr集群:1.首先启动每个 tomcat,要保证 zookeeper 集群是启动状态。2.启动每个tomcat,每个tomcat下的webapps都带有solr工程。3.cd /usr/local/solr-cloud/tomcat-1/bin./startup.sh4.cd /usr/local/solr-cloud/tomcat-2/bin./startup.sh5.cd /usr/local/solr-cloud/tomcat-3/bin./startup.sh6.cd /usr/local/solr-cloud/tomcat-4/bin./startup.sh7.必须重启zookeeper集群中的每个zookeeper 13.输入格式 192.168.25.133:8180/solr工程名测试是否搭建成功:1.成功访问4个solr:192.168.25.133:8180/solr、192.168.25.133:8280/solr、192.168.25.133:8380/solr、192.168.25.133:8480/solr 查看是否打开成功2.查看4个solr中的“Cloud”,注意全部solr显示绿色:

 3.对4个solr中的 collection1数据库进行查询solr数据


Spring Data Solr 连接 SolrCloud

在SolrJ中提供一个叫做CloudSolrServer的类,它是SolrServer的子类,用于连接solrCloud。
它的构造参数就是zookeeper的地址列表,另外它要求要指定defaultCollection属性(默认的 collection名称)。
我们现在修改springDataSolrDemo工程的配置文件 ,把原来的solr-server注销,替换为CloudSolrServer。
指定构造参数为地址列表,设置默认 collection名称。<!-- solr服务器地址:192.168.25.133:8080/solr<solr:solr-server id="solrServer" url="http://192.168.25.133:8080/solr" />-->  <bean id="solrServer" class="org.apache.solr.client.solrj.impl.CloudSolrServer"><!-- zookeeper集群中的每个zookeeper的IP地址:端口 --><constructor-arg value="192.168.25.128:2181,192.168.25.128:2182,192.168.25.128:2183" /><property name="defaultCollection" value="collection1"></property></bean>

1.只有当前war工程自身的pom.xml中配置有<profiles>的话,那么针对war工程不仅需要install -P“id标签值”,同样也需要使用tomcat7:run -P“id标签值”。
2.如果当前war工程自身的pom.xml中没有配置<profiles>的话,而war工程所依赖的jar工程中的pom.xml中配置有<profiles>的话,那么针对war工程只需要install 和 tomcat7:run 即可,无需加上 -P“id标签值”。


solr集群分片设置

1.创建新的 Collection 进行 新的分片处理:在浏览器输入以下地址,可以按照我们的要求创建新的Collection: 执行语句:http://192.168.25.133:8180/solr/admin/collections?action=CREATE&name=collection1&numShards=2&replicationFactor=2参数:action=CREATE:表示创建新的 Collection集合name=collection1:表示创建新的 Collection集合的名字是collection1numShards=2:代表的是SolrCloud的逻辑结构。表示创建的shard逻辑分片数为2。 replicationFactor=2:代表的是SolrCloud的物理结构。表示创建的shard逻辑分片数的备份数为2,那么其中一个为主,另外一个为备。

2.删除不用的 Collection:浏览器执行语句:http://192.168.25.133:8180/solr/admin/collections?action=DELETE&name=collection1参数:action=CREATE:表示删除 Collection集合name=collection2:表示删除的 Collection集合的名字是collection1

3.此处我们先删除原来的collection1数据库,然后重新创建一个新的collection1数据库,并且同时进行新的分片设置。1.删除原来的collection1数据库:浏览器执行http://192.168.25.133:8180/solr/admin/collections?action=DELETE&name=collection1

 2.重新创建一个新的collection1数据库,并且同时进行新的分片设置:浏览器执行http://192.168.25.133:8180/solr/admin/collections?action=CREATE&name=collection1&numShards=2&replicationFactor=2

 3.给新的collection数据库重新存入solr数据,需要执行pinyougou-solr-util项目中的SolrUtil.java才能把mysql数据存入到solr中,同时还需要修改applicationContext-solr.xml中的连接solr服务器的配置:1.给第一个solr的collection数据库重新存入solr数据:applicationContext-solr.xml:url="http://192.168.25.133:8180/solr/collection1_shard1_replica1"2.给第二个solr的collection数据库重新存入solr数据:applicationContext-solr.xml:url="http://192.168.25.133:8180/solr/collection1_shard1_replica2"3.给第三个solr的collection数据库重新存入solr数据:applicationContext-solr.xml:url="http://192.168.25.133:8180/solr/collection1_shard2_replica1"4.给第四个solr的collection数据库重新存入solr数据:applicationContext-solr.xml:url="http://192.168.25.133:8180/solr/collection1_shard2_replica2"

SolrCloud 的搭建、使用相关推荐

  1. windows下单机版的伪分布式solrCloud环境搭建Tomcat+solr+zookeeper

    前面简单了解了ZooKeeper的相关知识,为SolrCloud的学习作了一层铺垫.在SolrCloud的wiki中,可以很简单地用jetty实现嵌入式ZooKeeper的单机版SolrCloud.但 ...

  2. solr集群solrCloud的搭建

    上一章讲了solr单机版的搭建,本章将讲解sole集群的搭建.solr集群的搭建需要使用到zookeeper,搭建参见zookeeper集群的安装 一.solr实例的搭建 1. tomcat安装 这里 ...

  3. SolrCloud的搭建和使用

    1.solrCloud基本概念 1.1 什么是solrCloud SlrCloud(solr集群)是Solr提供的分布式搜索方案.当你需要大规模,容错,分布式索引和检索能力时使用SolrCloud.当 ...

  4. solr集群(solrcloud)部署搭建

    `简介` SolrCloud 旨在提供一个高度可用.容错的环境,用于跨多个服务器分发索引内容和查询请求.它是基于 Solr 和Zookeeper的分布式搜索方案,它的主要思想是使用 Zookeeper ...

  5. solrcloud 高可用集群搭建加solr整合hbase以及向ganglia报告度量

    一.环境准备 CentOS-6.4-x86_64-minimal.iso jdk-6u45-linux-i586-rpm.bin zookeeper-3.4.5.tar solr-4.6.0.zip ...

  6. Solr学习(三)SolrCloud集群搭建与创建Collection

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

  7. solrCloud集群的搭建

    什么是solrCloud SolrCloud是solr提供的分布式搜索方案 适用情景:大规模,容错,分布式索引,检索 soLrCloud是基于solr和zookeeper的分布式搜索方案, zooke ...

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

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

  9. tomcat classpath两个路径_solr安装-tomcat+solrCloud构建稳健solr集群

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

最新文章

  1. 【OpenCV】cv::Mat和std::vector之间的相互转换
  2. CF438E The Child and Binary Tree(有意思的生成函数 + 多项式求逆 + 多项式开方)
  3. 2017 湘潭邀请赛JSCPC GJ
  4. 将数据库中日期格式转换后显示在界面
  5. python PyQt5 QMainWindow类(Qt主窗口框架,主窗口提供了用于构建应用程序用户界面的框架)
  6. QTableWidget去掉默认行号
  7. Windows+VS2013爆详细Caffe编译安装教程
  8. linux如何查看磁盘剩余空间
  9. 武汉科技大学c语言复试题库,2016年武汉科技大学计算机科学与技术学院C语言程序设计复试笔试仿真模拟题...
  10. java createcriteria_Hibernate createCriteria查询详解
  11. java 局部变量空间 大小_变量作用域-1:局部变量 和成员变量、各种变量内存分配的大小...
  12. 浏览器展示CSS伪类的动画和过渡效果应用
  13. 处理方块之间的连接线
  14. paip..net 程序多语言切换开发的流程总结
  15. 文本聚类分析算法_10.HanLP实现k均值--文本聚类
  16. matlab 参数辨识,Matlab系统辨识尝试之详细过程1
  17. miRNA数据库篇——mirBase(序列数据库)
  18. bing搜索php,必应bing网页搜索小偷php程序 v1.0PHP小偷采集源码下载-华软网
  19. Navicat-在创建函数时提示Access violation at address ... in module ‘navicat.exe‘
  20. NPM => npm登录-发包-删包-整体流程

热门文章

  1. 【Pytorch with fastai】第 15 章 :深入探讨应用程序架构
  2. reghdfe:多维面板固定效应估计
  3. CSS中的overflow,
  4. Python 正则表达式 match、findall、search
  5. Transfomer详解
  6. aspose将word转换为pdf[aspose.word.java 18.11]
  7. 关于swiper在移动端,快速上下滑动出现白边的解决办法
  8. Java UT用例实践记录
  9. apollo github的说明介绍
  10. 栈详解(顺序栈和链栈)