solr
コマンドですべてのデータを削除するにはどうすればよいですか?とを使用solr
しlily
ていhbase
ます。
hbaseとsolrの両方からデータを削除するにはどうすればよいですか?
http://lucene.apache.org/solr/4_10_0/tutorial.html#Deleting+Data
solr
コマンドですべてのデータを削除するにはどうすればよいですか?とを使用solr
しlily
ていhbase
ます。
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]
削除するコアの名前に置き換えます)。または、データxmlデータを投稿する場合は、これを使用します。
<delete><query>*:*</query></delete>
必ずcommit=true
変更のコミットに使用して ください
ただし、hbaseデータをクリアすることについてはあまり考えていません。
&commit=true
クエリに追加して、それがhttp://host:port/solr/core/update?stream.body=<delete><query>*:*</query></delete>&commit=true
なければ[なし]になるようにした方がよいでしょう。なぜすべてのドキュメントが削除されなかったのかと思っていました。
次のコマンドを使用して削除できます。クエリによる削除コマンドで「すべてのドキュメントに一致」クエリを使用します。
'<delete><query>*:*</query></delete>
削除を実行した後もコミットする必要があるため、インデックスを空にするには、次の2つのコマンドを実行します。
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'
もう1つの戦略は、ブラウザーに2つのブックマークを追加することです。
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
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);
}
}
クエリによる削除コマンドで「すべてのドキュメントに一致」クエリを使用します。
削除を実行した後もコミットする必要があるため、インデックスを空にするには、次の2つのコマンドを実行します。
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'
<core>
URL で定義されたものとうまく機能しました。答えを編集しました。
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の学習およびテスト段階にあるので、このコードを使用する前にバックアップを検討してください)
これをブラウザで起動します
http://localhost:8983/solr/update?stream.body=<delete><query>*:*</query></delete>&commit=true
このコマンドは、solrのインデックス内のすべてのドキュメントを削除します
以下の手順を試しました。それはうまくいきます。
すべてのSOLRインデックス付きデータにヒットして削除するリンク「すべてのSOLRデータを削除」をクリックするだけで、画面に次の詳細が出力として表示されます。
<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">494</int>
</lst>
</response>
上記の出力が得られない場合は、次のことを確認してください。
host
(localhost)とport
(8080)を使用しました。ホストとポートが異なる場合は変更してください。collection
/ collection1
です。collection1
上記のリンクで使用しました。コア名が異なる場合も変更してください。上記のcurlの例は、cygwinターミナルから実行すると失敗しました。スクリプトの例を実行すると、このようなエラーが発生しました。
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>
コア名のループで削除を使用して、プロジェクト内のすべてを削除する必要がありました。
以下のクエリは、Cygwinターミナルスクリプトで機能しました。
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>
この1行でデータが消え、変更が持続しました。
Solrインデックスをクリアする場合は、全削除クエリを実行した後でコミットと最適化も行う必要があります。完全な手順が必要です(カールで十分です):http : //www.alphadevx.com/a/365-Clearing-a-Solr-search-index
Solr管理UIに削除リンクを追加するJavaScriptブックマークを作成しました
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がリアルタイムの更新と削除も維持することを説明しています。
Cloudera Searchで使用するためのLily HBase NRTインデクサーサービスの構成
HBaseが挿入、更新、削除をHBaseテーブルセルに適用すると、インデクサーは標準のHBaseレプリケーションを使用してSolrをHBaseテーブルの内容と一致させます。
truncate 'hTable'
同じでサポートされているかどうかは不明です。
または、トリガーまたはサービスを作成して、特定のイベントなどでSolrとHBaseの両方からデータをクリアします。
Solrコレクションのすべてのドキュメントを削除するには、次のリクエストを使用できます。
curl -X POST -H 'Content-Type: application/json' --data-binary '{"delete":{"query":"*:*" }}' http://localhost:8983/solr/my_collection/update
JSONボディを使用します。
/update?commit=true
。JSONリクエストの本文自体