从Solr Admin中删除solr文档

时间:2014-04-22 19:44:02

标签: solr

如何使用SOLR Admin删除SOLR索引中的所有文档。

我尝试使用网址但它有效,但想知道是否可以使用管理员完成相同的工作..

6 个答案:

答案 0 :(得分:51)

更新:使用此答案可以更好地使用较新版本的Solr:https://stackoverflow.com/a/48007194/3692256

我的原始答案如下:

我有点作弊,但没有像手工编写查询那么多。

由于我之前经历过意外删除的痛苦,我尽可能地尽可能地删除我的删除(在任何类型的数据存储中)。

1)在Solr管理查询屏幕中运行查询,仅使用" q"左上角的参数。将其缩小到您确实要删除的项目。对于此示例,我使用*:*,但您可以使用id:abcdef或范围等内容。如果你有一个疯狂的复杂查询,你可能会发现它更容易多次执行,一次是你要删除的数据的每一部分。

2)在结果的顶部,有一个灰色的URL。如果将鼠标悬停在它上面,它会变黑。这是用于获取结果的URL。右键(上下文)单击它并在新选项卡/窗口中打开它。你应该得到类似的东西:

http://localhost:8983/solr/my_core_name/select?q=*%3A*&wt=json&indent=true

现在,我希望将其变为删除格式。我将select?q=替换为update?commit=true&stream.body=<delete><query>,最后将&wt=json&indent=true替换为</query></delete>

所以我最终得到了:

http://localhost:8983/solr/my_core_name/update?commit=true&stream.body=<delete><query>*%3A*</query></delete>

深吸一口气,为了好运做任何事情,然后提交网址(输入关键作品)。

现在,您应该可以返回Solr管理页面并运行原始查询并获得零结果。

答案 1 :(得分:43)

在Solr管理界面的文档标签中使用以下查询之一:

<强> XML:

<delete><query>*:*</query></delete>

<强> JSON:

{'delete': {'query': '*:*'}}

请务必选择Document Type下拉到Solr Command (raw XML or JSON)

答案 2 :(得分:11)

对于每个不喜欢很多词的人:-)

Solr Admin: remove data from Core

答案 3 :(得分:6)

&#13;
&#13;
curl http://localhost:8080/solr/update -H "Content-type: text/xml" --data-binary '<delete><query>*:*</query></delete>'
curl http://localhost:8080/solr/update -H "Content-type: text/xml" --data-binary '<commit />'
&#13;
&#13;
&#13;

答案 4 :(得分:1)

仅当您要删除多个集合中的所有文档而不是选择性删除时,此解决方案才适用:


我有一个相同的场景,我需要删除多个集合中的所有文档。每个分片中有近50万个文档,每个集合中有多个分片。使用查询更新和删除文档是一项艰巨的任务,因此请遵循以下过程:

  1. 使用Solr API获取所有集合的详细信息-
    http://<solrIP>:<port>/solr/admin/collections?action=clusterstatus&wt=json
    
    这提供了详细信息,例如集合名称,numShards,配置名称,router.field,maxShards,replicationFactor等。
  2. 使用以下API将具有上述详细信息的输出json保存在文件中以备将来参考,并备份了删除文档所需的所有集合的备份:
    http://<solr-ip>:<port>/solr/admin/collections?action=BACKUP&name=myBackupName&collection=myCollectionName&location=/path/to/my/shared/drive
    
  3. 我还删除了所有收藏,这些收藏需要删除所有使用以下文件的文档:
    http://<solr-ip>:<port>/solr/admin/collections?action=DELETEALIAS&name=collectionname
    
  4. 使用步骤1和以下API中的详细信息重新创建所有集合:
    http://<solr-ip>:<port>/solr/admin/collections?action=CREATE&name=collectionname&numShards=number&replicationFactor=number&maxShardsPerNode=number&collection.configName=configname&router.field=routerfield
    

我对所有集合循环执行了上述步骤,并在几秒钟内完成了大约100个具有大量数据的集合。另外,我也为所有馆藏设置了备份。

有关其他Solr API的相关信息,请参见:DELETEALIAS: Delete a Collection Alias, Input

答案 5 :(得分:0)

在集合文档选项卡上选择 XML 并更新以下参数。

<delete><query>*:*</query></delete>