我有一个Solr 4索引,我想删除它的所有文件。
尝试#1:
http://www.domain.com:8080/solr/collection1/update?stream.body=%3Cdelete%3E%3Cquery%3E*:*%3C/query%3E%3C/delete%3E
http://www.domain.com:8080/solr/collection1/update?stream.body=%3Ccommit/%3E
结果#1:
<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">0</int>
</lst>
</response>
在Solr Admin > collection 1
下,我仍然看到Num Docs:829060
!我想这意味着删除查询不起作用。
进入
时我也看到了结果http://www.domain.com:8080/solr/collection1/select?q=*%3A*&wt=xml
尝试#2 使用Solarium PHP库
// Create a client instance
$config = array(
'endpoint' => array(
'localhost' => array(
'host' => '127.0.0.1',
'port' => 8080,
'path' => '/solr/',
)
)
);
$client = new Solarium\Client($config);
// get an update query instance
$update = $client->createUpdate();
// add the delete query and a commit command to the update query
$update->addDeleteQuery('*:*');
$update->addCommit();
// this executes the query and returns the result
$result = $client->update($update);
echo '<b>Update query executed</b><br/>';
echo 'Query status: ' . $result->getStatus(). '<br/>';
echo 'Query time: ' . $result->getQueryTime();
输出#2:
Update query executed
Query status: 0
Query time: 3
我仍然看到Num Docs:829060
!这不起作用。
任何想法如何解决问题?
我手动删除了索引文件夹/collection1/data
,做了DIH完全导入,但仍无法删除新索引中的文档。有什么建议吗?
solrconfig.xml中
<requestHandler name="/update" class="solr.UpdateRequestHandler">
<!-- See below for information on defining
updateRequestProcessorChains that can be used by name
on each Update Request
-->
<!--
<lst name="defaults">
<str name="update.chain">dedupe</str>
</lst>
-->
</requestHandler>
答案 0 :(得分:1)
您可以尝试在命令行上查询solr吗?例如:
curl http://domain.com:8080/solr/collection1/update?commit=true -H "Content-Type: text/xml" --data-binary '<delete><query>*:*</query></delete>'
运行此查询后,您应该看到类似
的内容INFO: [phisch-dev] webapp=/solr path=/update params={wt=javabin&version=2} {deleteByQuery=*:* (-1428803632004857856)} 0 126
在solr日志中(例如/var/log/tomcat7/catalina.2013-03-07.log)。
我在这里使用POST,只是为了确保GET / stream.body不会以奇怪的方式编码。 我添加了commit属性,以便自动提交删除查询。
另外,您是否对RequestHandler进行了任何更改?它会覆盖默认值或类似的东西吗?检查solrconfig.xml并搜索/ update。我的包含(与solr一起发货):
<requestHandler name="/update" class="solr.UpdateRequestHandler">
</requestHandler>
应该没有<lst name="defaults">
,<lst name="appends"
或<lst name="invariants">
顺便说一句,在打开新搜索之前,对索引的更改不可见。如果从索引中删除并重新启动solr会发生什么。文件还在吗?
修改强>
它恰好是一个错误:https://issues.apache.org/jira/browse/SOLR-3432
在模式中添加_version_
字段可以修复此问题(感谢Nyxynyx的精度)
答案 1 :(得分:0)
删除索引中第一种方法中的所有条目后,仍然需要提交它:
http://www.domain.com:8080/solr/collection1/update?stream.body=%3Ccommit/%3E
答案 2 :(得分:0)
只需在浏览器中触发以下命令即可。
http://localhost:8983/solr/update?stream.body=:&commit=true