Solr Multicore意义

2019-03-27 01:18|来源: 网路

转帖地址:http://aixiangct.blog.163.com/blog/static/9152246120111128114423633/

Solr Multicore意义

       Solr Multicore solr 1.3 的新特性。其目的一个solr实例,可以有多个搜索应用。< xmlnamespace prefix ="o" ns ="urn:schemas-microsoft-com:office:office" />

       我们既可以把不同类型的数据放到同一index中,也可以使用分开的多indexes。基于这一点,你只需知道如何使用多 indexes(实际上就是运行Solr的多实例)。尽管如此,为每一个类型添加一个完整的Solr实例会显得太臃肿庞大。

    Solr1.3引入了Solr core的概念,该方案使用一个Solr实例管理多个indexes,这样就有热点corehot core)的重读(reloading)与交换(swap,通常是读index与写index交换),那么管理一个 coreindex也容易些。每个Solr core由它自己的配置文件和索引数据组成。在多core执行搜索和索引几乎和没有使用core一样。你只是添加core的名字为各自不同的URL。单core情况下的如下搜索:

http://localhost:8983/solr/select?q=dave%20matthews

在多core环境下,你可以通过如下方式访问一个名为mbartistscore

http://localhost:8983/solr/core0/select?q=dave%20matthews

并非在URL中引入core name的参数名值对,而是用不同的context。这样就可以像在单core中执行你的管理任务,搜索,更新操作。

 

MultiCore的配置方法

1、找到solr下载包中的example文件夹,在它的下面有个multicore文件夹,将这个文件夹下面的core0core1solr.xml拷贝到 c:\solr-tomcat\solr下面。

注意:有一个 solr.xml(这只是默认文件,当然也可以指定别的文件),如:

<?xml version="1.0" encoding="UTF-8" ?> 

         <solr persistent="false">   

           <cores adminPath="/admin/cores"> 

             <core name="core0" instanceDir="core0" /> 

             <core name="core1" instanceDir="core1" /> 

           </cores> 

         </solr> 

 

这个文件是告诉solr应该加载哪些core<cores>……</cores>里有 core0core1core0(可以类比以前的solr.home/conf目录下有schema.xmlsolrconfig.xml,可以把实际应用的/solr/conf/schema.xml复制过来(注意:solrconfig.xml不要复制)。

 

2、启动tomcat,访问应用,就可以看到有 Admin core0 Admin core1

http://192.168.10.1:8080/solr/

http://192.168.10.1:8080/solr/core0/admin/

http://192.168.10.1:8080/solr/core1/admin/

http://192.168.10.1:8080/solr/core1/admin/analysis.jsp

 

3、采用上面的默认solr.xml,索引文件将存放在同一个目录下面,在这里将存放在C:\solr-tomcat\solr\data,如果你想更改目录,或者两个应用存放在不同的目录,请参见下面的xml

<core name="core0" instanceDir="core0">

    <property name="dataDir" value="/opt/solr-tomcat/solr/data/core0" />

 </core>

<core name="core1" instanceDir="core1">

    <property name="dataDir" value="/opt/solr-tomcat/solr/data/core1" />

 </core>

 

 

You can also specify properties in solr.xml which can be used in the solrconfig.xml and schema.xml files.

<solr persistent="true" sharedLib="lib">

 <property name="snapshooter" value="/home/solr-user/solr/bin/snapshooter.sh" />

 <cores adminPath="/admin/cores">

  <core name="core0" instanceDir="core0">

    <property name="dataDir" value="/data/core0" />

  </core>

  <core name="core1" instanceDir="core1" />

 </cores>

</solr>

 

一些关键的配置值是:

  1.Persistent="false"指明运行时的任何修改我们不做保存。如拷贝。如果你想保存从启动起的一些改动,那就把 persistent设置为true。如果你的index策略是完成建index到一个纯净的core中然后交换到活动core 那么你绝对应该设为true。

  2.sharedLib="lib"指明了所有core的jar文件的lib目录。如果你有一个core有自己需要的jar文件,那么你可以把他们置入到core/lib目录。例如:karaoke core 使用 Solr Cell来索引化富文本内容,因此那些用来解析和抽取富文本的jar文件被放到./examples/cores/karaoke/lib/.

 

为何使用多core

Solr实例支持多core比启用多index要好(do more)。多core同时解决了在生产环境下的一些关键需求:

1.重建索引

2.测试配置变更

3.合并索引

4.运行时重命名core

为何多core不是默认的?

core1.3版本中才加的,1.4后更成熟。我们强烈建议你使用多core,既是你现在的solr.xml只配置了一个core,虽然会比单个索引稍复杂,但可以带来管理core上的好处。或许一天单个core可能最终RELOAD and STATUS命令,又或许单个core最终会被废禁。多个core会是Solr将来支持大规模分布式索引的关键。因此,以后可以期待更多。

你可以得到更多的关于Solr的资料:http://wiki.apache.org/solr/CoreAdmin

转自:http://blog.csdn.net/jiushuai/article/details/8080758

相关问答

更多
  • 工作解决方案: 使用此或此说明安装Java8。 下载solr 。 我使用的是6.2.0版。 从solr-xyztg解压缩bin目录中的install_solr_service.sh脚本( bin/install_solr_service.sh )。 使用上面tgz文件的名称作为第一个参数( ./install_solr_service.sh solr-xyztgz )运行此脚本。 它将为您的系统安装solr。 核心将位于/opt/solr目录中,数据将位于/var/solr 。 使用service solr ...
  • 你有没有对它进行整理或复制? 如果您不知道,请阅读此内容 。 1)通过solr在内部同步分片或复制,因此应在两个核心中对其进行分割或添加。 2)无论哪一个,solr为你做这件事,你只需要让zooKeeper准备接受并平衡每个核心之间的请求。 3)如果您要将数据添加到复制的核心,则不能,但如果您正在分析核心,我认为这是可能的,它在这里得到了回答: 如何使用solrj索引特定分片中的数据 Did you shard it or was it replicated? Read this if you don't ...
  • Solr不会阻止您在单个集合中托管多个实体。 您可以为这两个实体定义字段,并将它们托管在集合中。 如果要过滤每个实体的结果,则需要具有标识符来标识实体。 如果您的馆藏很小或者用户和汽车之间存在关系,那么在同一个馆藏中托管它们可能会有所帮助 对于Solr多核检查应答 Solr Multicore基本上是一个允许Solr托管多个内核的设置。 这些核心将托管一组完全不同的无关实体。 每个表也可以有一个单独的Core。 例如,如果您拥有完全不相关的实体的文档,人员,股票的集合,那么您希望在不同的集合中托管 多核设置 ...
  • Solr是否支持部分文档索引更新? 不。 查看常见问题解答 。 有什么可以做的吗? 是的,IIRC在JIRA项目中存在一个问题。 查一查,询问缺少什么,为实施它做出贡献。 Does Solr support partial document index updates? Nope. Check out the FAQ. Is there anything that can be done? Yes, IIRC there was an issue in the project JIRA about it. ...
  • Solr核心本质上是在应用程序服务器的相同上下文中运行的多个索引。 你可以认为它为每个用户安装了1个war文件 。 每个核心都以名称分隔,因此您必须自己跟踪哪个网址对哪个用户有效。 例如, http://host.com/solr/usercore1/select?q=test http://host.com/solr/usercore2/select?q=test 它基于config solr.xml :
  • 由于DATASOLR-203 , 目前无法直接完成此操作。 解决上述问题后,您可以按以下方式执行此操作: @Configuration @EnableSolrRepositories(multicoreSupport = true) static class SolrConfiguration { @Bean SolrServer solrServer() throws FileNotFoundException { String solrHome = ResourceUtils.get ...
  • SOLR中总有一个核心。 默认情况下,SOLR实例创建名为collection1的核心。 如果你有一个核心并且不确定如何在运行时重新加载,你可以使用它, http://localhost:8080/solr/admin/cores?action=RELOAD&core=collection1 As best as I can tell, online reloading requires a Multicore configuration, which it turns out isn't too har ...
  • 更多像这需要存储的唯一密钥。 MoreLikeThis requires a stored unique key.
  • 我想我解决了它...只需在solr.xml中指定相同的 instanceDir(但不同的dataDir) I think I solved it... simply by specifying the same instanceDir (but different dataDir) in the confiugation in solr.xml
  • 有一些设置允许您更动态地处理核心的卸载 。 首先,您需要将每个核心标记为transient="true" ,这意味着如果核心数量超过transientCacheSize ,则可以卸载核心。 后者是您可以在solr.xml 元素中添加的选项,而前者是针对每个核心定义(在core.properties中)。 通过API创建核心时,您还可以提供transient = true。 transientCacheSize的大小必须调整到你看到的负载,核心的大小和可用的内存量(并用于每个核心)。 听起来你已经 ...