从solr Admin中删除solr文档

dfuffjeb  于 2022-10-21  发布在  Solr
关注(0)|答案(8)|浏览(279)

如何使用SOLR Admin删除我的SOLR索引中的所有文档。
我尝试使用url,它可以工作,但想知道是否可以使用Admin完成相同的操作。。

eqqqjvef

eqqqjvef1#

在Solr Admin UI的文档选项卡中使用以下查询之一:

XML:

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

JSON:

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

确保选择Document Type下拉列表至Solr Command (raw XML or JSON)

ffx8fchx

ffx8fchx2#

更新:新版本的Solr可能会更好地使用这个答案:https://stackoverflow.com/a/48007194/3692256
我的原始答案如下:
我有点作弊,但不如手写查询。
由于我以前经历过意外删除的痛苦,我尝试尽可能地(在任何类型的数据存储中)避免删除。
1) 仅使用左上角的“q”参数,在Solr Admin query屏幕中运行查询。将其缩小到实际要删除的项目。对于本例,我使用*:*,但您可以使用m1n 1o1p或range等。如果您有一个疯狂的复杂查询,您可能会发现多次执行此操作更容易,对您希望删除的数据的每个部分执行一次。
2) 在结果的顶部,有一个灰色的URL。如果你把鼠标悬停在它上面,它会变成黑色。这是用于获取结果的URL。右键(上下文)单击它并在新选项卡/窗口中打开它。你应该得到这样的东西:

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

现在,我想将其转换为删除格式。我用update?commit=true&stream.body=<delete><query>替换select?q=,最后用m1n 5o1p代替&wt=json&indent=true
所以我最终得到了:

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

深吸一口气,为好运做任何事,然后提交url(输入keyworks)。
现在,您应该能够返回到Solr管理页面并运行原始查询,结果为零。

d7v8vwbk

d7v8vwbk3#

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


小时

6qftjkof

6qftjkof4#

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 />'
p5cysglq

p5cysglq5#

在集合文档选项卡上选择XML并更新下面的参数。
<delete><query>*:*</query></delete>

fruv7luv

fruv7luv6#

此解决方案仅适用于删除多个集合中的所有文档,而不适用于选择性删除:
我有同样的场景,我需要删除多个集合中的所有文档。每个碎片中有近50万个文档,每个集合有多个碎片。使用查询更新和删除文档是一项艰巨的任务,因此遵循以下流程:
1.使用Solr API获取所有集合的详细信息-

http://<solrIP>:<port>/solr/admin/collections?action=clusterstatus&wt=json

这提供了集合名称、numHards、configname、router等详细信息。字段、maxShards、replicationFactor等。
1.将包含上述详细信息的输出json保存在一个文件中以备将来参考,并使用以下API备份我删除文档所需的所有集合:

http://<solr-ip>:<port>/solr/admin/collections?action=BACKUP&name=myBackupName&collection=myCollectionName&location=/path/to/my/shared/drive

1.此外,我删除了所有需要删除所有文档的集合,以便使用以下内容:

http://<solr-ip>:<port>/solr/admin/collections?action=DELETEALIAS&name=collectionname

1.使用步骤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:删除集合别名,输入

7fyelxc5

7fyelxc57#

在“文档”选项卡下,在“文档类型”下选择“原始XML或JSON”,然后使用每个文档的唯一标识符添加所需的查询。

{'delete': {'query': 'filter(product_id:(25634 25635 25636))'}}


小时

xmd2e60i

xmd2e60i8#

如果要按ID删除某些文档,可以使用Solr POST工具。

./post -c $core_name ./delete.xml

其中delete.xml文件包含文档ID:

<delete>
  <id>a3f04b50-5eea-4e26-a6ac-205397df7957</id>
</delete>

相关问题