Solr云(SolrCloud)

article/2025/11/4 16:02:02

   

    SolrCloud只是作为Solr的一个突出特性,这个特殊的特性能够实现分布式功能。利用这个功能,你能建立高效、容错的Solr服务器群。这对于访问量规模巨大的企业级应用来说,使用SolrCloud能实现高有效性、容错性、分布式索引和搜索功能。

1      了解SolrCloud

    千呼万唤,始出来。期待已久,Solr4.1的版本终于发布了。Solr4包含的突出特性SolrCloud, 真的让人眼前一亮。下面,让就来探究一下SolrCloud。

1.1 了解SolrCores 与集合(Collections)


       在一个简单的实例中,Solr有一些东西被称作一个SolrCore,其本质上视由于它就是一个单一的索引(Singlle Index)。当你想要多个索引(multiple indexes),你就不等不创建多个SolrCores。使用SolrCloud,一个简单的索引能够跨越多个Solr索引实例。我们称所有这些在逻辑上的索引(Index)的SolrCores为一个集合( A Collection),而一个集合( a collection)本质上是一个单一的索引,区别在于它能够跨越多个SolrCore‘s(Solr实例),而二者都是针对索引的缩放比例,也包括索引的冗余。比如说,你想将4个SolrCore的Solr移动到SolrCloud上去,你将会有4个集合(4 collections),而每一个集合是由多个独特的SolrCores组成。这就意味着,一个单一的索引(Single Index)能够由在不同机器上的多个SolrCores组成。

                                                                                              

1.2 准备工作

下载最新的Solr稳定版本包(最新的是Solr 4.1,下载地址http://lucene.apache.org/solr/downloads.html)。为了便于演示,笔者采用实用cygwin (更多的信息,请参考http://cygwin.com/ )工具来执行脚本命令。

 


 

2 熟悉Solr Cloud

如果你对Solr还不太熟悉,建议先到Solr官网上查看一下具体的简单介绍(Simple Tutorial)。在对于Solr有一定了解后,删除Sample目录下的你测试产生的相关数据。这样能避免产生意外的错误,保证Demo能顺利进行。

对于分布式配置和协调,Solr嵌入和使用了Zookeeper(更详细的信息,请参考文档http://zookeeper.apache.org/)作为一个仓库--考虑到Zookepper能够包含所有Solr服务器的信息的分布式文件系统。

2.1 简单两个片集群(ShardCluster)

                                                                 


 这个例子简单地创建了由两个Solr服务器组成的集群,Solr服务器实现了一个集合(A Collection)的两个不同片(shard).下面,展示了有关的实现步骤。

   需要两台Solr服务器,可以复制一下已有example(下载的Solr4.2包,可以查看到这个目录)。进入解压后的目录后,在cygwin窗口执行命令。

   cp -r example example01

   下面这个命令将会启动Solr服务器以及启动一个新的Solr集群。

          java -Djetty.port=8800 -Dbootstrap_confdir=./solr/collection1/conf

                  -Dcollection.configName=myconf-DzkRun -DnumShards=2 -jar start.jar

·        -DzkRun 触发嵌入在Solr服务器中的Zookeeper运行。

·        -Dbootstrap_confdir=./solr/collection1/conf 既然我们还没在Zookeeper中进行配置,这个参数引起本地的配置目录./solr/上传并且作为“myconfig”配置。这个名字“myconfig”是来自"collection.configName"得参数值。

·        -Dcollection.configName=myconf setsthe config to use for the new collection. Omitting this param will cause theconfig name to default to "configuration1". 设置新的集合(Collection)的配置去使用,忽略这个配置将会引起配置名默认为"configuration1"。

·        -DnumShards=2我们计划分离索引到几个逻辑分区,这个指定了对应数量。

·        -Djetty.port=8800设置Jetty服务器运行的端口,默认是8983。

浏览http://localhost:8800/solr/#/~cloud?view=rgraph,可以看到集群的状态。点击Tree,会发现我们的配置文件目录已经上传上去了,对应的config目录也生产了。

    


    现在,然我们启动第二个Solr服务器。它将会自动地赋给shard2,原因是我们没有具体指定这个shard id值。

    java-Djetty.port=7800 -DzkHost=localhost:9983 -jar start.jar

    当我们指定-DzkHost=localhost:9800,是更具shard的Zookeeper的值来指定的。在没

有指定Zookeeper端口的情况,嵌入在Solr中的Zookeeper默认为Sorl端口+1000,所以这里的Zookeeper的端口应该是9800。

接下来,建立一些索引文件。为了匆忙地完成,我们才采用 CloudSolrServer实现。

    cd exampledocs

    java-Durl=http://localhost:8800/solr/collection1/update -jar post.jar *.xml

在浏览器中输入:http://localhost:8800/solr/collection1/select?q=*:*&wt=xml,可以得到以下结果。

2.2 简单带有片重复(shard replicas)的两个片集群



    这个例子将会通过复制shard1和shard2来构建先前的例子,额外的备份的shard被用做来实现高有效性和容错性,或是简单地提升分布式查询能力。

首先,保持先前的例子处于运行中。使用命令,复制这两个实例。

    cp -r example01example01_replica

    cp -r example02example02_replica

    在每个彼此的窗口中开启这两个新的不同端口的服务器。

    java -Djetty.port=8801-DzkHost=localhost:9800 -jar start.jar

    java -Djetty.port=7801-DzkHost=localhost:9800 -jar start.jar


     浏览Zookeeper窗口http://localhost:8800/solr/#/~cloud,发现有效shard上图所示。此刻,窗口的查询日子和有关节点信息如下图。




    你可以尝试去关闭一个节点,看看查询是否失效。一旦一个服务器中断了,发送请求将会发送到剩余启动的服务器。这时,你会继续看到整个一样的结果。如果我们停掉某个几点的所有服务器,这个请求对于这些服务器将会得到503错误。在shards中,返回仅仅这些存在于有效剩余有效shards的文档,添加跟随的查询参数便可以生效。

shards.tolerant=true

    SolrCloud使用的是实施细节的领导(Leader)和监督者。这意味着,一些nodes/replicas能够扮演特殊的角色。你没有必要担心是否这个失效的服务器是领导者还是分布式的监督者—如果你碰巧是他们中的一个失效,他们自动透明地选择新的领导者或者新的监督者来回复使用者以及能无缝地负责他们各自的工作。任何Solr实例都能提升作为他们对于角色之一。

    

   (Note:从Word文档中复制过来的,可以有些排版不太美观,请谅解。)


    


http://chatgpt.dhexx.cn/article/u0UoCnJK.shtml

相关文章

solrcloud入门详细使用教程

一、solrcloud介绍 solrcloud是solr提供的分布式的搜索方案,当我们需要大规模,容错,分布式搜索和索引时使用solrcloud。当系统的索引量少,请求并发性低的时候不需要用到solrcloud。solrcloud是基于solr和zookeeper的分布式搜索方案…

Solr--SolrCloud简介与集群搭建

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

SolrCloud详解及搭建

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

SolrCloud简介——solr 名词解释

转自——找不到出处了。。 一.简介 SolrCloud是Solr4.0版本以后基于Solr和Zookeeper的分布式搜索方案。SolrCloud是Solr的基于Zookeeper一种部署方式。Solr可以以多种方式部署,例如单机方式,多机Master-Slaver方式。 二.特色功能 SolrCloud有几个特色…

MySQL全文索引功能

说明自然语言全文索引布尔全文索引 相关性计算 扩展查询 官网地址:https://dev.mysql.com/doc/refman/5.7/en/fulltext-search.html 说明 简介 1).MySQL中的全文索引是FultLeXT类型的索引。 2).全文索引只能用于InnoDB或MyISAM表,只能为CHAR、VARCHAR或文本列创建…

Mysql——全文索引

概念: 一般查询都是根据数值范围或者精准的字符串进行数据过滤查询,而全文索引则通过关键字的匹配来进行查询过滤,那么就需要基于相似度的查询,而不是原来的精确数值或字符串比较。 版本支持: 在MySQL 5.7.6之前&am…

全文索引原理详解

一、总论 根据http://lucene.apache.org/java/docs/index.html 定义: Lucene 是一个高效的,基于Java 的全文检索库。 所以在了解Lucene之前要费一番工夫了解一下全文检索。 那么什么叫做全文检索呢?这要从我们生活中的数据说起。 我们生活中的…

mysql 全文索引使用以及限制

项目场景: 最近在做性能优化,有使用到全文索引,做下记录。 问题描述 我们在做列表查询的时候,大多数情况都会遇到 like %%的查询,而这种查询会让索引失效 在数据量较大的时候,会让查询变得很慢&#xff0…

Mysql全文索引解析

parser与N-gram Parser分词器选择 及 ft_min_word_len与innodb_ft_min_token_size的区分及界定 学习《高性能mysql(第三版)》这本书时,学到了全文索引这一张节,但作者当时使用的版本是MySQL 5.5,届时只有MyISAM引擎支…

全文索引原理介绍

一、总论 根据http://lucene.apache.org/java/docs/index.html 定义: Lucene 是一个高效的,基于Java 的全文检索库。 所以在了解Lucene之前要费一番工夫了解一下全文检索。 那么什么叫做全文检索呢?这要从我们生活中的数据说起。 我们生活中的…

什么是全文索引,为什么要使用全文索引?

MySQL中什么是全文索引,为什么要使用全文索引? 1.全文索引在查找上方面其效率是普通模糊(like)查询的N倍2.MySQL 5.7.6 之后的版本innodb支持全文索引3.修改配置文件 my.ini 或者my.conf 增加以下配置innodb_ft_min_token_size …

MySQL全文索引怎么创建

mysql全文索引 很慢,速度不如like的百分之一 从explain开始说起吧,很显然第一个sql语句压根没用任何索引(key列内什么都没有)!第二个倒是用到索引,却是主键索引,并非你添加的fulltext索引! 接下来&#xff…

SQL Server 全文索引的应用

在公司项目中提出了一个需求: 搜索包含指定关键词的数据。得到这需求后,站在技术角度考虑第一时间就联想到使用SQL里面“like”查询语句。进一步分析需求后,发现“Like”查询满足不到实际的要求。 示例: ---------------------…

全文检索

本文我将为大家讲解全文检索技术——Lucene,现在这个技术用到的比较多,我觉得大家还是应该掌握一下,不说多精通,但是应该有所了解。在讲解之前,我们先来看一个案例,通过该案例引出全文检索技术——Lucene。…

mysql全文索引使用

一、前言 在以前的博客中小编介绍过mysql的执行流程,索引优化等。正好前一段时间项目有一个新的需求,就重新调研了一下mysql的全文索引,并对mysql的全文索引进行了压测,看看性能怎么样。以判断是否使用。——可想而知,…

MySQL使用全文索引(fulltext index) 及中文全文索引使用

全文索引介绍 ----------------------------------------------------------------------------------------------------------------------------- 1.创建全文索引(FullText index) 旧版的MySQL的全文索引只能用在MyISAM表格的char、varchar和text的字段上。 不过新版的My…

索引和全文检索

目录 索引 全文检索 学习类容:索引和全文检索 索引 索引:对数据库中一列或多列的值进行排序的一种结构 作用:合理的使用索引可以加速检索表中的数据。 分类: 按键列个数区分:单列索引,多列索引。 按…

MySQL使用全文索引(fulltext index)

1.创建全文索引(FullText index) 旧版的MySQL的全文索引只能用在MyISAM表格的char、varchar和text的字段上。 不过新版的MySQL5.6.24上InnoDB引擎也加入了全文索引,所以具体信息要随时关注官网, 1.1. 创建表的同时创建全文索引 CREATE TABLE article ( …

MySQL 全文索引

说到查询,日常中常用的baidu,cnbing ,google等之类的网站。关系型数据库中的全文索引应该也是从这些搜索引擎里摸索出来的。 全文索引介绍: 在数据库中常用的查询方式一般是 等价,范围方式。当然也有LIKE %的模糊查询&#xff0c…

MySQL索引系列:全文索引

什么是全文索引? 全文索引首先是 MySQL 的一种索引类型,也是搜索引擎的关键技术。 试想在1M大小的文件中搜索一个词,可能需要几秒,在100M的文件中可能需要几十秒,如果在更大的文件中搜索那么就需要更大的系统开销&am…