Wie lösche ich alle Daten solr
per Befehl? Wir verwenden solr
mit lily
und hbase
.
Wie kann ich Daten sowohl von hbase als auch von solr löschen?
http://lucene.apache.org/solr/4_10_0/tutorial.html#Deleting+Data
Wie lösche ich alle Daten solr
per Befehl? Wir verwenden solr
mit lily
und hbase
.
Wie kann ich Daten sowohl von hbase als auch von solr löschen?
http://lucene.apache.org/solr/4_10_0/tutorial.html#Deleting+Data
Antworten:
Wenn Sie den Solr-Index bereinigen möchten -
Sie können http url feuern -
http://host:port/solr/[core name]/update?stream.body=<delete><query>*:*</query></delete>&commit=true
(Ersetzen Sie ihn [core name]
durch den Namen des Kerns, aus dem Sie löschen möchten). Oder verwenden Sie diese Option, wenn Sie XML-Daten veröffentlichen:
<delete><query>*:*</query></delete>
Stellen Sie sicher, dass Sie commit=true
die Änderungen festschreiben
Ich habe jedoch keine Ahnung, wie man hbase-Daten löscht.
&commit=true
der Abfrage hinzufügen , damit sie wird. http://host:port/solr/core/update?stream.body=<delete><query>*:*</query></delete>&commit=true
Ohne sie habe ich mich gefragt, warum nicht alle Dokumente entfernt wurden.
Sie können die folgenden Befehle zum Löschen verwenden. Verwenden Sie die Abfrage "Alle Dokumente abgleichen" in einem Befehl zum Löschen nach Abfrage:
'<delete><query>*:*</query></delete>
Sie müssen auch nach dem Ausführen des Löschvorgangs einen Commit ausführen. Um den Index zu leeren, führen Sie die folgenden zwei Befehle aus:
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'
Eine andere Strategie wäre, zwei Lesezeichen in Ihren Browser einzufügen:
http://localhost:8983/solr/update?stream.body=<delete><query>*:*</query></delete>
http://localhost:8983/solr/update?stream.body=<commit/>
Quelldokumente von SOLR:
https://wiki.apache.org/solr/FAQ#How_can_I_delete_all_documents_from_my_index.3F
Wenn Sie alle Daten in Solr über SolrJ löschen möchten, gehen Sie wie folgt vor.
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);
}
}
Wenn Sie alle Daten in HBase löschen möchten, gehen Sie wie folgt vor.
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);
}
}
Verwenden Sie die „entsprechen alle docs“ Abfrage in einer Lösch durch Abfragebefehl: :
Sie müssen auch nach dem Ausführen des Löschvorgangs einen Commit ausführen. Um den Index zu leeren, führen Sie die folgenden zwei Befehle aus:
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>
in der URL definiert. Ich habe die Antwort bearbeitet.
Verwenden Sie in der Befehlszeile:
bin/post -c core_name -type text/xml -out yes -d $'<delete><query>*:*</query></delete>'
Ich bin hierher gekommen, um alle Dokumente aus der solr-Instanz über das .NET-Framework mit SolrNet zu löschen. So konnte ich es machen:
Startup.Init<MyEntity>("http://localhost:8081/solr");
ISolrOperations<MyEntity> solr =
ServiceLocator.Current.GetInstance<ISolrOperations<MyEntity>>();
SolrQuery sq = new SolrQuery("*:*");
solr.Delete(sq);
solr.Commit();
Dies hat alle Dokumente gelöscht. (Ich bin nicht sicher, ob dies wiederhergestellt werden kann. Ich bin in der Lern- und Testphase von Solr. Bitte ziehen Sie eine Sicherung in Betracht, bevor Sie diesen Code verwenden.)
Feuern Sie dies im Browser ab
http://localhost:8983/solr/update?stream.body=<delete><query>*:*</query></delete>&commit=true
Dieser Befehl löscht alle Dokumente im Index in Solr
Ich habe die folgenden Schritte ausprobiert. Es funktioniert gut.
Klicken Sie einfach auf den Link Alle SOLR-Daten löschen, die alle Ihre SOLR-indizierten Daten treffen und löschen. Anschließend werden die folgenden Details als Ausgabe auf dem Bildschirm angezeigt.
<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">494</int>
</lst>
</response>
Wenn Sie die obige Ausgabe nicht erhalten, stellen Sie bitte Folgendes sicher.
host
(localhost) und port
(8080) für den obigen Link verwendet. Bitte ändern Sie den Host und den Port, wenn es an Ihrem Ende anders ist.collection
/ sein collection1
. Ich habe collection1
im obigen Link verwendet. Bitte ändern Sie es auch, wenn Ihr Kernname anders ist.Vor allem die Curl-Beispiele sind für mich fehlgeschlagen, als ich sie von einem Cygwin-Terminal aus ausgeführt habe. Es gab Fehler wie diesen, als ich das Skriptbeispiel ausführte.
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>
Ich musste das Löschen in einer Schleife für Kernnamen verwenden, um sie alle in einem Projekt zu löschen.
Diese Abfrage unten hat für mich im Cygwin-Terminal-Skript funktioniert.
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>
Diese eine Zeile ließ die Daten verschwinden und die Änderung blieb bestehen.
Wenn Sie einen Solr-Index löschen, sollten Sie auch ein Commit durchführen und optimieren, nachdem Sie die Abfrage "Alle löschen" ausgeführt haben. Vollständige Schritte erforderlich (Curl ist alles, was Sie brauchen): http://www.alphadevx.com/a/365-Clearing-a-Solr-search-index
Ich habe ein JavaScript-Lesezeichen erstellt, das den Löschlink in der Solr Admin-Benutzeroberfläche hinzufügt
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>');
})();
Wenn Sie Cloudera 5.x verwenden, wird hier in dieser Dokumentation erwähnt, dass Lily auch die Echtzeit-Aktualisierungen und -Löschungen verwaltet.
Konfigurieren des Lily HBase NRT-Indexerdienstes für die Verwendung mit Cloudera Search
Da HBase Einfügungen, Aktualisierungen und Löschungen auf HBase-Tabellenzellen anwendet, hält der Indexer Solr mithilfe der Standard-HBase-Replikation mit dem Inhalt der HBase-Tabelle konsistent.
Nicht sicher, obtruncate 'hTable'
auch unterstützt wird.
Andernfalls erstellen Sie einen Trigger oder Service, um Ihre Daten von Solr und HBase für ein bestimmtes Ereignis oder etwas anderes zu löschen.
Um alle Dokumente einer Solr-Sammlung zu löschen, können Sie diese Anforderung verwenden:
curl -X POST -H 'Content-Type: application/json' --data-binary '{"delete":{"query":"*:*" }}' http://localhost:8983/solr/my_collection/update
Es verwendet JSON-Body.
/update?commit=true
. Der JSON-Anfragetext selbst funktioniert hervorragend :)