如何删除solr和hbase的所有数据
如何通过命令删除solr
的所有数据? 我们用lily
和hbase
使用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":"*:*"} }'