如何使用SOLR Admin删除我的SOLR索引中的所有文档。我尝试使用url,它可以工作,但想知道是否可以使用Admin完成相同的操作。。
eqqqjvef1#
在Solr Admin UI的文档选项卡中使用以下查询之一:
XML:
<delete><query>*:*</query></delete>
JSON:
{'delete': {'query': '*:*'}}
确保选择Document Type下拉列表至Solr Command (raw XML or JSON)。
Document Type
Solr Command (raw XML or JSON)
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。所以我最终得到了:
update?commit=true&stream.body=<delete><query>
select?q=
&wt=json&indent=true
http://localhost:8983/solr/my_core_name/update?commit=true&stream.body=<delete><query>*%3A*</query></delete>
深吸一口气,为好运做任何事,然后提交url(输入keyworks)。现在,您应该能够返回到Solr管理页面并运行原始查询,结果为零。
d7v8vwbk3#
对于每个不喜欢很多单词的人:-)
小时
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 />'
p5cysglq5#
在集合文档选项卡上选择XML并更新下面的参数。<delete><query>*:*</query></delete>
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:删除集合别名,输入
7fyelxc57#
在“文档”选项卡下,在“文档类型”下选择“原始XML或JSON”,然后使用每个文档的唯一标识符添加所需的查询。
{'delete': {'query': 'filter(product_id:(25634 25635 25636))'}}
xmd2e60i8#
如果要按ID删除某些文档,可以使用Solr POST工具。
./post -c $core_name ./delete.xml
其中delete.xml文件包含文档ID:
delete.xml
<delete> <id>a3f04b50-5eea-4e26-a6ac-205397df7957</id> </delete>
8条答案
按热度按时间eqqqjvef1#
在Solr Admin UI的文档选项卡中使用以下查询之一:
XML:
JSON:
确保选择
Document Type
下拉列表至Solr Command (raw XML or JSON)
。ffx8fchx2#
更新:新版本的Solr可能会更好地使用这个答案:https://stackoverflow.com/a/48007194/3692256
我的原始答案如下:
我有点作弊,但不如手写查询。
由于我以前经历过意外删除的痛苦,我尝试尽可能地(在任何类型的数据存储中)避免删除。
1) 仅使用左上角的“q”参数,在Solr Admin query屏幕中运行查询。将其缩小到实际要删除的项目。对于本例,我使用
*:*
,但您可以使用m1n 1o1p或range等。如果您有一个疯狂的复杂查询,您可能会发现多次执行此操作更容易,对您希望删除的数据的每个部分执行一次。2) 在结果的顶部,有一个灰色的URL。如果你把鼠标悬停在它上面,它会变成黑色。这是用于获取结果的URL。右键(上下文)单击它并在新选项卡/窗口中打开它。你应该得到这样的东西:
现在,我想将其转换为删除格式。我用
update?commit=true&stream.body=<delete><query>
替换select?q=
,最后用m1n 5o1p代替&wt=json&indent=true
。所以我最终得到了:
深吸一口气,为好运做任何事,然后提交url(输入keyworks)。
现在,您应该能够返回到Solr管理页面并运行原始查询,结果为零。
d7v8vwbk3#
对于每个不喜欢很多单词的人:-)
小时
6qftjkof4#
p5cysglq5#
在集合文档选项卡上选择XML并更新下面的参数。
<delete><query>*:*</query></delete>
fruv7luv6#
此解决方案仅适用于删除多个集合中的所有文档,而不适用于选择性删除:
我有同样的场景,我需要删除多个集合中的所有文档。每个碎片中有近50万个文档,每个集合有多个碎片。使用查询更新和删除文档是一项艰巨的任务,因此遵循以下流程:
1.使用Solr API获取所有集合的详细信息-
这提供了集合名称、numHards、configname、router等详细信息。字段、maxShards、replicationFactor等。
1.将包含上述详细信息的输出json保存在一个文件中以备将来参考,并使用以下API备份我删除文档所需的所有集合:
1.此外,我删除了所有需要删除所有文档的集合,以便使用以下内容:
1.使用步骤1中的详细信息和以下API重新创建所有集合:
我对所有集合执行了上述循环步骤,并在几秒钟内完成了大约100个包含大量数据的集合。另外,我还有所有收藏的备份。
请参阅此处了解其他Solr API:DELETEALIAS:删除集合别名,输入
7fyelxc57#
在“文档”选项卡下,在“文档类型”下选择“原始XML或JSON”,然后使用每个文档的唯一标识符添加所需的查询。
小时
xmd2e60i8#
如果要按ID删除某些文档,可以使用Solr POST工具。
其中
delete.xml
文件包含文档ID: