首先,我创建了一个名为 usercollection 的集合:
http://xxxxx/solr/admin/collections?action=CREATE&name=usercollection&numShards=3&replicationFactor=3&maxShardsPerNode=3
然后我发现了一些错误,所以我删除了它。
http://xxxx/solr/admin/collections?action=DELETE&name=usercollection
最后,我想再次创建该集合。我发现了一些错误。
`May 16, 2013 8:32:23 PM org.apache.solr.cloud.OverseerCollectionProcessor run
INFO: Overseer Collection Processor: Get the message id:/overseer/collection-queue- work/qn-0000000000 message:{
"operation":"createcollection",
"numShards":"3",
"maxShardsPerNode":"3",
"createNodeSet":null,
"name":"usercollection",
"replicationFactor":"3"}
May 16, 2013 8:32:23 PM org.apache.solr.common.SolrException log
SEVERE: Collection createcollection of createcollection failed:org.apache.solr.common.SolrException: collection already exists: usercollection
at org.apache.solr.cloud.OverseerCollectionProcessor.createCollection(OverseerCollectionProcessor.java:311)
at org.apache.solr.cloud.OverseerCollectionProcessor.processMessage(OverseerCollectionProcessor.java:160)
at org.apache.solr.cloud.OverseerCollectionProcessor.run(OverseerCollectionProcessor.java:112)
at java.lang.Thread.run(Thread.java:662)`
所以,我认为删除时集合API有问题。那么,我怎样才能真正删除集合呢?
答案 0 :(得分:3)
遇到同样的问题,最后通过使用Solr提供的zkcli.sh在zookeeper中手动编辑和更新clusterstate.json来解决问题。
下载clusterstate.json:
zkcli.sh -z zk-host-name -cmd getfile /clusterstate.json clusterstateLoca.json
编辑下载的clusterstateLocal.json,删除已删除集合的节点,在本地保存clusterstateLocal.json。
从ZK中删除陈旧的clusterstate.json
zkcli.sh -z zk-host-name -cmd clear /clusterstate.json
将修改后的clusterstate.json上传到ZK:
zkcli.sh -z zk-host-name -cmd putfile /clusterstate.json ./clusterstateLocal.json
答案 1 :(得分:2)
删除集合后,您还应该提交(如果使用浏览器,您可以执行相同的操作而无需卷曲)
curl http://localhost:8080/solr/update -H "Content-type: text/xml" --data-binary '<commit />'
...此时告诉Solr优化它的索引也是一个好主意:
curl http://localhost:8080/solr/update -H "Content-type: text/xml" --data-binary '<optimize />'
来源http://www.alphadevx.com/a/365-Clearing-a-Solr-search-index
答案 2 :(得分:0)
您需要更新zookeeper集合中的clusterstate.json
文件。您的云集信息保存在那里。