Wie lösche ich alle Daten von solr
per Befehl? Wir verwenden solr
mit lily
und hbase
.
Wie kann ich Daten aus hbase und solr löschen?
http://lucene.Apache.org/solr/4_10_0/tutorial.html#Deleting+Data
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 [core name]
durch den Namen des Kerns, aus dem Sie löschen möchten). Oder verwenden Sie dies, wenn Sie Daten XML-Daten buchen:
<delete><query>*:*</query></delete>
Stellen Sie sicher, dass Sie commit=true
verwenden, um die Änderungen zu bestätigen
Sie haben jedoch nicht viel Ahnung davon, ob Sie hbase-Daten löschen.
Ich habe diese Anfrage verwendet, um alle meine Datensätze zu löschen, aber manchmal muss dies festgelegt werden.
Fügen Sie dazu &commit=true
zu Ihrer Anfrage hinzu:
http://Host:port/solr/core/update?stream.body=<delete><query>*:*</query></delete>&commit=true
Sie können die folgenden Befehle verwenden, um .. .. zu löschen: Verwenden Sie die Abfrage "Alle Dokumente zusammenstellen" in einem Befehl zum Löschen durch Abfrage:
'<delete><query>*:*</query></delete>
Nach dem Ausführen des Löschvorgangs müssen Sie auch einen Commit ausführen. Führen Sie die folgenden beiden Befehle aus, um den Index zu leeren:
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 weitere 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
Post-Json-Daten (z. B. mit Curl)
curl -X POST -H 'Content-Type: application/json' \
'http://<Host>:<port>/solr/<core>/update?commit=true' \
-d '{ "delete": {"query":"*:*"} }'
Wenn Sie alle Daten in Solr über SolrJ löschen möchten, gehen Sie folgendermaßen 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 folgendermaßen 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 Abfrage "Alle Dokumente anpassen" in einem Befehl zum Löschen durch Abfrage::
Nach dem Ausführen des Löschvorgangs müssen Sie auch einen Commit ausführen. Führen Sie die folgenden beiden Befehle aus, um den Index zu leeren:
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'
Ich bin hier hergekommen, um alle Dokumente über .Net Framework aus SolrNet 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 das wiederhergestellt werden kann, ich befinde mich in der Lern- und Testphase von Solr. Daher sollten Sie vor der Verwendung dieses Codes ein Backup in Betracht ziehen.)
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 diese Abfrage verwendet, um alle meine Datensätze zu löschen.
http://Host/solr/core-name/update?stream.body=%3Cdelete%3E%3Cquery%3E*:*%3C/query%3E%3C/delete%3E&commit=true
Wenn Sie alle Daten bereinigen müssen, ist es möglicherweise schneller, die Sammlung neu zu erstellen, z.
solrctl --zk localhost:2181/solr collection --delete <collectionName>
solrctl --zk localhost:2181/solr collection --create <collectionName> -s 1
Von der Kommandozeile aus:
bin/post -c core_name -type text/xml -out yes -d $'<delete><query>*:*</query></delete>'
Die Curl-Beispiele scheiterten vor allem an mir, als ich sie von einem Cygwin-Terminal aus betrieb. Beim Ausführen des Skriptbeispiels gab es solche Fehler.
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 hat im Cygwin-Terminalskript für mich 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 hielt an.
Solr Ich bin nicht sicher, aber Sie können alle Daten aus hbase löschen, indem Sie den Befehl truncate wie folgt verwenden:
truncate 'table_name'
Es werden alle Zeilenschlüssel aus der hbase-Tabelle gelöscht.
Wenn Sie einen Solr-Index löschen, sollten Sie auch ein Commit ausführen und nach dem Ausführen der Alle-Alles-Abfrage optimieren. 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ösch-Link 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 Indexer-Dienstes für die Verwendung mit Cloudera Search
Wenn HBase Inserts einfügt, aktualisiert und in HBase-Tabellenzellen löscht, Der Indexer hält Solr mithilfe von .__ für den Inhalt der HBase-Tabelle. HBase-Standardreplikation.
Nicht sicher, obtruncate 'hTable'
auch in derselben Version unterstützt wird.
Ansonsten erstellen Sie einen Auslöser oder Service, um Ihre Daten von Solr und HBase für ein bestimmtes Ereignis oder etwas zu löschen.