solr中关于core的管理

来源:互联网 发布:松岛枫哪部最好看知乎 编辑:程序博客网 时间:2024/04/28 16:36

一、查询

1.core的状态查询

http://se246:8983/solr/admin/cores?action=STATUS

2.指定coreName进行查询

http://localhost:8983/solr/admin/cores?action=STATUS&core=core0

二、创建

需要提供coreName、实例路径、Config配置、schema文件及数据目录 ,其中instanceDir必须要. config, schema & dataDir 可选

http://localhost:8983/solr/admin/cores?action=CREATE&name=coreX&instanceDir=path_to_instance_directory&config=config_file_name.xml&schema=schema_file_name.xml&dataDir=data

Solr3.4 创建一个新的core可以使用可选的属性标签在 solr.xml内部,格式为: property.name=value request parameter  

Solr4.3 支持两个可选的参数  

  • loadOnStartup=[true|false] - 决定当solr启动或者等待当第一次引用是是否需要载入core.

  • transient=[true|false] - 决定当一些瞬时的core超出了瞬时core的缓存大小时是否需要自动的卸载,可以指定在core标签中

三、重启core

http://localhost:8983/solr/admin/cores?action=RELOAD&core=core0

这里主要使用于当solrconfig.xml或者schema.xml文件改变(新增字段、默认参数改变等),同时你可以使用这些配置不要要停止或者重启整个servlet容器的时候使用。

注意:从solr4.0开始reload命令重启solrcore,会重用已有的各种对象比如solrIndexWriter等,这样的结果,一些配置选项当简单使用重启选项时不能生效,可以参见solr jira的描述https://issues.apache.org/jira/browse/SOLR-3592。

四、重命名

比如将core0改变为core5

http://localhost:8983/solr/admin/cores?action=RENAME&core=core0&other=core5

五、交换两个存在core

在存在的两个core上使用交换命令,主要用户将新core放在"ondeck中",将原来的core方便你执行roll-back等操作

http://localhost:8983/solr/admin/cores?action=SWAP&core=core1&other=core0

六、卸载core

注意如果一个core注册的时候有多个名字,那么只需要指定特定的映射才会溢出  

  • http://localhost:8983/solr/admin/cores?action=UNLOAD&core=core0  

Solr3.3 中存在一个可选的参数 "deleteIndex" ,主要使用于删除卸载的core的索引,比如说 

  • http://localhost:8983/solr/admin/cores?action=UNLOAD&core=core0&deleteIndex=true  

在 Solr4.0 中也存在两个可选的参数"deleteDataDir" 和 "deleteInstanceDir" 在卸载的core上

  • deleteDataDir 删除数据及子文件
  • deleteInstanceDir 删除实例目录,删除所有与这个core相关的文件比如索引文件、配置文件等,注意这里也有一个Bug在你需要指定绝对路径才能做到

 http://localhost:8983/solr/admin/cores?action=UNLOAD&core=core0&deleteIndex=true

总而言之,这三个删除都是有层次的,"deleteInstanceDir"包括删除"deleteDataDir" and "deleteIndex" ,出于小心考虑你可以使用"deleteDataDir" and "deleteIndex"

 七、MergeIndexes合并索引

可以将多个core里面的索引合并到一个core中。

http://localhost:8983/solr/admin/cores?action=mergeindexes&core=core0&indexDir=/opt/solr/core1/data/index&indexDir=/opt/solr/core2/data/index

上面命令是将core1和core2的索引合并到core0中,其中数据路径定义在admin/solr.xml中

NOTE

1.另外在执行这条命令之前,必须确保在core1和core2上调用了commit操作(保证关闭IndexWriter)同时在core1和core2之间没有任何的在操作完成之前没有任何的写操作。

2.不能合并太多的索引会导致core0的索引会崩溃,另外一旦索引完成要确保搜索在 core0上进行搜索

3.如果不存在core0,也不会创建新的core0。所以,必须保证core0必须存在同时能够兼容core1和core2,

另外,在Solr3.3以后, CoreAdminHandler 同样至此传递路径的core方案.  

 http://localhost:8983/solr/admin/cores?action=mergeindexes&core=core0&srcCore=core1&srcCore=core2

 这里的不同之处在于使用的是core而不是index的路径,下面说明一下IndexDir和srcIndex的区别

  1)使用indexDir参数能够合并index与solr无关,也就是直接通过lucene就可以

 2)使用indexDir参数必须小心索引没有并写,意味着要关闭IndexWriter或则使用solr的提交命令

 3) 使用IndexDir参数必须指定索引的路径,虽然这样很麻烦,当然我们可以直接使用core

  4)使用srcCore,即使该core的索引正在执行,只要保证合并的索引不崩溃就可以

当然,我们也可以使用lucene-misc工具进行合并索引,我们可以按如下步骤进行执行:

  step1:查找lucene的jar包,对应于你当前使用的solr版本。你可以把他copy到solr的war包文件,减压war包jar xvf solr.war,而lucene的jar包应该在WEB-INF/lib中。

 step2:下载lucene http://www.apache.org/dyn/closer.cgi/lucene/java/ 同时解压它,主要关心里面的contrib/misc/lucene-misc-VERSION.jar 
 step3:确保你将要合并的索引是关闭的

 step4:使用命令 java -cp /path/to/lucene-core-VERSION.jar:/path/to/lucene-misc-VERSION.jar org.apache.lucene.misc.IndexMergeTool /path/to/newindex /path/to/index1 /path/to/index2 。此操作将在/path/to/newindex下创建一个新的的索引包含了index1和Index2.经新index复制过去,当前旧的index要先弄走

 ex:  java -cp lucene-core-3.4.0.jar:lucene-misc-3.4.0.jar org.apache.lucene.misc.IndexMergeTool ./newindex ./app1/solr/data/index ./app2/solr/data/index

注意:luncene mergeTool和solr coreAdmin都会在合并之中产生重复的索引文档,如果两个文档拥有唯一的key那么两个shard将被合并。

八、索引的分离Split

    从 Solr4.3 后将索引分离两个或多个索引,它接受下面的参数  

  • "core" - 该core下的索引将要被拆分 
  • "path" - 分拆到多个索引的位置参数
  • "targetCore" - 目标core,必须存在指定合并的位置

注意path和tartgetCore必须指定其中一个,两个都指定不是必须的

ex.

  • http://localhost:8983/solr/admin/cores?action=SPLIT&core=core0&targetCore=core1&targetCore=core2 

  • http://localhost:8983/solr/admin/cores?action=SPLIT&core=core0&path=/path/to/index/1&path=/path/to/index/2  

这个命令通常作为solrCloud分离shard集合的api,同时也可以在非SolrCloud-solr下使用,当使用了非cloud core这样原索引将分离成等量的多个索引文档

 

原文来自:

http://wiki.apache.org/solr/CoreAdmin

0 0
原创粉丝点击