如何删除solr和hbase的所有数据

如何通过命令删除solr的所有数据? 我们用lilyhbase使用solr

我如何从hbase和solr中删除数据?

http://lucene.apache.org/solr/4_10_0/tutorial.html#Deleting+Data

如果你想清理Solr索引 –

你可以激发http url –

 http://host:port/solr/[core name]/update?stream.body=<delete><query>*:*</query></delete>&commit=true 

(将[core name]replace为要删除的核心的名称)。 或者使用这个,如果发布数据XML数据:

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

确保使用commit=true来提交更改

清理hbase数据虽然没有太多的想法。

我已经使用这个请求来删除所有的logging,但是有时候这是必要的。

为此,请将&commit=true添加到您的请求中:

 http://host:port/solr/core/update?stream.body=<delete><query>*:*</query></delete>&commit=true 

如果你想通过SolrJ删除Solr中的所有数据,可以这样做。

 public static void deleteAllSolrData() { HttpSolrServer solr = new HttpSolrServer("http://localhost:8080/solr/core/"); try { solr.deleteByQuery("*:*"); } catch (SolrServerException e) { throw new RuntimeException("Failed to delete data in Solr. " + e.getMessage(), e); } catch (IOException e) { throw new RuntimeException("Failed to delete data in Solr. " + e.getMessage(), e); } } 

如果你想删除HBase中的所有数据,可以这样做。

 public static void deleteHBaseTable(String tableName, Configuration conf) { HBaseAdmin admin = null; try { admin = new HBaseAdmin(conf); admin.disableTable(tableName); admin.deleteTable(tableName); } catch (MasterNotRunningException e) { throw new RuntimeException("Unable to delete the table " + tableName + ". The actual exception is: " + e.getMessage(), e); } catch (ZooKeeperConnectionException e) { throw new RuntimeException("Unable to delete the table " + tableName + ". The actual exception is: " + e.getMessage(), e); } catch (IOException e) { throw new RuntimeException("Unable to delete the table " + tableName + ". The actual exception is: " + e.getMessage(), e); } finally { close(admin); } } 

您可以使用以下命令来删除。 在按查询删除命令中使用“匹配所有文档”查询:

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

您必须在运行删除之后提交,以清空索引,运行以下两个命令:

 curl http://localhost:8983/solr/update --data '<delete><query>*:*</query></delete>' -H 'Content-type:text/xml; charset=utf-8' curl http://localhost:8983/solr/update --data '<commit/>' -H 'Content-type:text/xml; charset=utf-8' 

另一个策略是在浏览器中添加两个书签:

 http://localhost:8983/solr/update?stream.body=<delete><query>*:*</query></delete> http://localhost:8983/solr/update?stream.body=<commit/> 

SOLR源文件:
https://wiki.apache.org/solr/FAQ#How_can_I_delete_all_documents_from_my_index.3F

在浏览器中激发这一点

http://localhost:8983/solr/update?stream.body=<delete><query>*:*</query></delete>&commit=true此命令将删除索引中的所有文档

我来到这里想通过使用SolrNet的.Net框架删除solr实例中的所有文档。 以下是我如何做到这一点:

 Startup.Init<MyEntity>("http://localhost:8081/solr"); ISolrOperations<MyEntity> solr = ServiceLocator.Current.GetInstance<ISolrOperations<MyEntity>>(); SolrQuery sq = new SolrQuery("*:*"); solr.Delete(sq); solr.Commit(); 

这已经清除了所有的文件。 (我不确定这是否可以恢复,我在Solr的学习和testing阶段,所以在使用这个代码之前请考虑备份)

在查询删除命令中使用“匹配所有文档”查询::

您必须在运行删除之后提交,以清空索引,运行以下两个命令:

 curl http://localhost:8983/solr/update --data '<delete><query>*:*</query></delete>' -H 'Content-type:text/xml; charset=utf-8' curl http://localhost:8983/solr/update --data '<commit/>' -H 'Content-type:text/xml; charset=utf-8' 

如果您需要清除所有数据,重新创build收集可能会更快,例如

 solrctl --zk localhost:2181/solr collection --delete <collectionName> solrctl --zk localhost:2181/solr collection --create <collectionName> -s 1 

上面的curl示例在我从cygwinterminal运行时都失败了。 有这样的错误,当我跑脚本的例子。

 curl http://192.168.2.20:7773/solr/CORE1/update --data '<delete><query>*:*</query></delete>' -H 'Content-type:text/xml; charset=utf-8' <?xml version="1.0" encoding="UTF-8"?> <response> <lst name="responseHeader"><int name="status">0</int><int name="QTime">1</int></lst> </response> <!-- It looks like it deleted stuff, but it did not go away maybe because the committing call failed like so --> curl http://192.168.1.2:7773/solr/CORE1/update --data-binary '' -H 'Content-type:text/xml; charset=utf-8' <?xml version="1.0" encoding="UTF-8"?> <response> <lst name="responseHeader"><int name="status">400</int><int name="QTime">2</int></lst><lst name="error"><str name="msg">Unexpected EOF in prolog at [row,col {unknown-source}]: [1,0]</str><int name="code">400</int></lst> </response> 

我需要在核心名称的循环中使用删除来清除项目中的所有内容。

以下查询在Cygwinterminal脚本中为我工作。

 curl http://192.168.1.2:7773/hpi/CORE1/update?stream.body=<delete><query>*:*</query></delete>&commit=true <?xml version="1.0" encoding="UTF-8"?> <response> <lst name="responseHeader"><int name="status">0</int><int name="QTime">1</int></lst> </response> 

这一行使数据消失,变化依然存在。

我用这个查询来删除所有的logging。

 http://host/solr/core-name/update?stream.body=%3Cdelete%3E%3Cquery%3E*:*%3C/query%3E%3C/delete%3E&commit=true 

清除Solr索引时,还应该在运行delete-all查询之后进行提交和优化。 需要全部步骤(curl是你需要的): http : //www.alphadevx.com/a/365-Clearing-a-Solr-search-index

我做了一个JavaScript书签,添加了Solr Admin UI中的删除链接

 javascript: (function() { var str, $a, new_href, href, upd_str = 'update?stream.body=<delete><query>*:*</query></delete>&commit=true'; $a = $('#result a#url'); href = $a.attr('href'); str = href.match('.+solr\/.+\/(.*)')[1]; new_href = href.replace(str, upd_str); $('#result').prepend('<a id="url_upd" class="address-bar" href="' + new_href + '"><strong>DELETE ALL</strong> ' + new_href + '</a>'); })(); 

如果您使用的是Cloudera 5.x,那么在本文档中提到了Lily还保留了实时更新和删除。

configurationLily HBase NRT索引器服务以用于Clouderasearch

当HBase向HBase表格单元应用插入,更新和删除操作时,索引器使用标准HBase复制使Solr与HBase表格内容保持一致。

不知道truncate 'hTable'是否也被支持。

否则,您可以创build一个触发器或服务来清除Solr和HBase上的特定事件或其他数据的数据。

发布json数据(例如curl)

 curl -X POST -H 'Content-Type: application/json' \ 'http://<host>:<port>/solr/<core>/update?commit=true' \ -d '{ "delete": {"query":"*:*"} }'