Solr 删除数据的几种方式

2019-03-27 01:01|来源: 网路

原文出处:http://blog.chenlb.com/2010/03/solr-delete-data.html

有时候需要删除 Solr 中的数据(特别是不重做索引的系统中,在重做索引期间)。删除一些 Solr 无效数据(或不合格数据)。

删除 solr 中的数据有几种方式:

1、先来看 curl 方式:

  1. curl http://localhost:8080/update --data-binary "<delete><query>title:abc</query></delete>" -H 'Content-type:text/xml; charset=utf-8'  
  2.   
  3. #删除完后,要提交  
  4.   
  5. curl http://localhost:8080/update --data-binary "<commit/>" -H 'Content-type:text/xml; charset=utf-8'  
curl http://localhost:8080/update --data-binary "<delete><query>title:abc</query></delete>" -H 'Content-type:text/xml; charset=utf-8'  #删除完后,要提交  curl http://localhost:8080/update --data-binary "<commit/>" -H 'Content-type:text/xml; charset=utf-8' 

2、用自带的 post.jar,在 apache-solr-XXX\example\exampledocs 目录下:

  1. java -Ddata=args  -jar post.jar "<delete><id>42</id></delete>"  
  2.   
  3. #怎么使用 post.jar 查看帮助  
  4.   
  5. java -jar post.jar -help  
java -Ddata=args  -jar post.jar "<delete><id>42</id></delete>"  #怎么使用 post.jar 查看帮助  java -jar post.jar -help 

3、直接用 url,使用 stream 相关参数:

比如:

http://localhost:8080/solr/update/?stream.body=<delete><id>123</id></delete>&stream.contentType=text/xml;charset=utf-8&commit=true

stream 相关参数还有:stream.file=(服务器本地文件),stream.url 分别指到你的删除文本,这里是直接字符串内容用 stream.body 参数。commit 参数是指提交,提交了才能看到删除效果。

小结:其实,方式1、2原理一样,直接 POST xml 数据过去。方式3就是直接可以告诉服务器从那些地方取删除的 xml 内容。

删除指令有两种,一是:用 <id></id> 包装;二是:<query></query> 包装。指令都很明显,一个是 id 值(是在 schema.xml 的 uniqueKey 所指字段的值,而不是索引内部的 docId);query 值是查询串,如:title:"solr lucene"。


转自:http://www.cnblogs.com/wycg1984/archive/2010/03/20/1690271

相关问答

更多
  • solr数据导入,经过这几天的查资料,我觉得solr数据导入可以有三种方式: 1、编写数据xml文件,通过post.jar导入; 2、通过DIH导入; 3、利用solrj导入数据; 现针对第三种方式进行研究,在第一步中写了一段小的测试代码,可以参考:http://wiki.apache.org/solr/Solrj#Streaming_documents_for_an_update 具体的代码解释如下: String url = "http://localhost:8080/solr"; HttpSolrS ...
  • 多少天,我终于在长时间的斗争中找到了问题。 谢谢大家 首先,我不知道version number in schema file中设置version number in schema file 。 根据文档的默认值,对于多值,从版本1.1开始是false 1.0: multiValued attribute did not exist, all fields are multiValued by nature 1.1: multiValued attribute introduced, false ...
  • 如果要清理Solr索引 - 你可以点击http url - http://host:port/solr/core/update?stream.body=*:*&commit=true 或者使用这个,如果发布数据xml数据 - *:* 确保使用commit true提交更改 没有太多的想法清除hbase数据虽然。 If you want to clean up Solr inde ...
  • 我不知道为什么这不工作,但这是逻辑上相同的,它的工作: -(myField:superneat AND -myOtherField:somethingElse) 也许这与在查询中定义相同的字段两次有关 尝试在solr-user组中询问,然后在这里发回最后的答案! I don't know why that doesn't work, but this one is logically equivalent and it does work: -(myField:superneat AND -myOther ...
  • 不幸的是,在撰写本文时这是一个悬而未决的问题 ,实施它似乎并没有太大的兴趣。 正如评论中所建议的,您可以通过设置一些外部连接(如WebDAV,FTP,SFTP,SCP)来解决此问题。 Unfortunately that's an open issue as of this writing, and there doesn't seem to be much interest to implement it. As suggested in the comments you can work around ...
  • 这些DB服务器的用途不同,它在很大程度上取决于您的应用程序(以及您存储的数据类型)是否应该仅使用Solr或MySQL。 MySQL可以很好地存储具有大量关系和表格的数据(彼此相关的表格)。 Solr很适合文本搜索(正如你所说:快速索引),如果你没有很多“相关数据”,你确实可以将这些数据存储在相同的文档中。 有些人确实只使用Solr来存储他们的数据库...但我仍然认为RDBM可以很好地用于某些类型的数据。 例如:如果您想允许快速搜索系统用户并存储他们的完整个人资料,以及一些信息详细信息......最好使用So ...
  • David2342 要在solr 4.6中配置uuid字段,您可能需要以下配置 id
  • 您在每个查询中都给出了参数rows=2147483647 。 该参数的含义是(取自参考文献) 您可以使用rows参数对查询中的结果进行分页。 该参数指定Solr应一次返回客户端的完整结果集中的最大文档数。 默认值为10.也就是说,默认情况下,Solr一次返回10个文档以响应查询。 因此,您告诉Solr生效,在单个响应中发送查询的所有匹配。 这是你糟糕表现的原因。 当查询“java”时 ,谷歌是否会向您发送所有500.000.000次匹配,不会。 为什么不,性能。 我知道的每一个IR应用程序都会为您提供一个带 ...
  • 关于将数据从solr导入到elasticsearch,您可以查看elasticsearch mock solr插件 。 它为elasticsearch添加了一个类似solr的新端点,这样你就可以使用你为solr编写的索引器(如果有的话)来索引elasticsearch中的文档。 此外,我一直在研究elasticsearch solr 河 ,它允许通过solrj库将数据从solr导入到elasticsearch。 唯一的限制是它只能导入您配置为存储在solr中的字段。 我应该能够很快公开它,只需几天。 我会尽 ...
  • 是的,可以将已爬网数据索引到Solr。 我以前做过这个。 您需要创建一个实现IPipelineStep的自定义管道步骤,并将其添加到您的NCrawler实现中。 我使用SolrNet作为连接Solr的客户端。 这里有一些代码可以帮助您入门。 SolrNet.Startup.Init("http://localhost:8983/solr"); using(Crawler c = new Crawler("http://ncrawler.codeplex.com/", n ...