114 votes

Comment supprimer toutes les données de Solr et de Hbase ?

Comment supprimer toutes les données de solr par commande ? Nous utilisons solr con lily y hbase .

Comment puis-je supprimer des données à la fois de hbase et de solr ?

http://lucene.apache.org/solr/4_10_0/tutorial.html#Deleting+Data

213voto

Jayendra Points 27472

Si vous voulez nettoyer l'index de Solr -

vous pouvez envoyer l'url http -

http://host:port/solr/[core name]/update?stream.body=<delete><query>*:*</query></delete>&commit=true

(remplacer [core name] avec le nom du noyau que vous voulez supprimer). Ou utilisez ceci si vous enregistrez des données xml :

<delete><query>*:*</query></delete>

Veillez à utiliser commit=true pour valider les changements

Je n'ai pas beaucoup d'expérience dans l'effacement des données hbase.

7 votes

Core est nécessaire si vous utilisez une configuration multicore.

1 votes

Cette réponse traite de la façon de supprimer toutes les tables dans hbase : stackoverflow.com/questions/3990952/ . Si vous souhaitez simplement supprimer les données de la table, vous pouvez les tronquer plutôt que de les supprimer.

0 votes

Est-ce qu'il supprime uniquement l'index ? ou est-ce qu'il supprime également les données réelles ?

93voto

Showtim3 Points 416

J'ai utilisé cette demande pour supprimer tous mes enregistrements mais il est parfois nécessaire de le faire.

Pour cela, ajoutez &commit=true à votre demande :

http://host:port/solr/core/update?stream.body=<delete><query>*:*</query></delete>&commit=true

18voto

Frank R. Points 1

Poster des données json (par exemple avec curl)

curl -X POST -H 'Content-Type: application/json' \
    'http://<host>:<port>/solr/<core>/update?commit=true' \
    -d '{ "delete": {"query":"*:*"} }'

15voto

Navjot Bhardwaj Points 428

Vous pouvez utiliser les commandes suivantes pour supprimer. Utilisez la requête "match all docs" dans une commande de suppression par requête :

'<delete><query>*:*</query></delete>

Vous devez également effectuer un commit après avoir exécuté la suppression. Ainsi, pour vider l'index, exécutez les deux commandes suivantes :

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'

Une autre stratégie consiste à ajouter deux signets dans votre navigateur :

http://localhost:8983/solr/update?stream.body=<delete><query>*:*</query></delete>
http://localhost:8983/solr/update?stream.body=<commit/>

Docs source du SOLR :
https://wiki.apache.org/solr/FAQ#How_can_I_delete_all_documents_from_my_index.3F

9voto

RATabora Points 123

Si vous souhaitez supprimer toutes les données dans Solr via SolrJ, procédez comme suit.

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

Si vous voulez supprimer toutes les données dans HBase faites quelque chose comme ceci.

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X