web-dev-qa-db-de.com

So löschen Sie alle Daten aus solr und hbase

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

83
XMen

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.

162
Jayendra

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
90
Showtim3

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

8
Navjot Bhardwaj

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":"*:*"} }'
7
Frank R.

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);
    }
 }
7
RATabora

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'
4
Nanhe Kumar

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.)

3
Habib

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

3
bittu

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
2
Sufiyan Malek

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
1
Tagar

Von der Kommandozeile aus:

 bin/post -c core_name -type text/xml -out yes -d $'<delete><query>*:*</query></delete>'
1

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.

1
ndasusers

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.

0
Kapil

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

0
alphadevx

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>');
})();

enter image description here

0
MyroslavN

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.

0