一、查询
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上
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 后将索引分离两个或多个索引,它接受下面的参数
注意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