web-dev-qa-db-fra.com

Comment supprimer toutes les données de solr et hbase

Comment puis-je supprimer toutes les données de solr par commande? Nous utilisons solr avec lily et hbase.

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

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

83
XMen

Si vous voulez nettoyer l’index Solr - 

vous pouvez renvoyer http url - 

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

(remplacez [core name] par le nom du noyau que vous souhaitez supprimer). Ou utilisez ceci si vous publiez des données XML:

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

Assurez-vous d'utiliser commit=true pour valider les modifications. 

Cependant, vous ne savez pas trop comment effacer les données hbase.

162
Jayendra

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

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

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

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

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

Vous devez également valider après l'exécution de la suppression. 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/>


Documents sources de SOLR: 
https://wiki.Apache.org/solr/FAQ#How_can_I_delete_all_documents_from_my_index.3F

8
Navjot Bhardwaj

Données post-json (par exemple avec curl)

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

Si vous souhaitez supprimer toutes les données de 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 souhaitez supprimer toutes les données de HBase, procédez comme suit.

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

Utilisez la requête "match all docs" dans une commande de suppression par requête::

Vous devez également valider après l'exécution de la suppression. 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'
4
Nanhe Kumar

Je suis venu ici pour supprimer tous les documents de l'instance solr via le framework .Net à l'aide de SolrNet. Voici comment j'ai pu le faire:

Startup.Init<MyEntity>("http://localhost:8081/solr");
ISolrOperations<MyEntity> solr =
    ServiceLocator.Current.GetInstance<ISolrOperations<MyEntity>>();
SolrQuery sq = new SolrQuery("*:*");
solr.Delete(sq);
solr.Commit();

Cela a effacé tous les documents. (Je ne suis pas sûr que cela puisse être récupéré, je suis en phase d'apprentissage et de test de Solr, veuillez donc envisager une sauvegarde avant d'utiliser ce code)

3
Habib

déclenche ceci dans le navigateur

http://localhost:8983/solr/update?stream.body=<delete><query>*:*</query></delete>&commit=true cette commande supprimera tous les documents de l'index dans solr

3
bittu

J'ai utilisé cette requête pour supprimer tous mes enregistrements.

http://Host/solr/core-name/update?stream.body=%3Cdelete%3E%3Cquery%3E*:*%3C/query%3E%3C/delete%3E&commit=true
2
Sufiyan Malek

Si vous devez nettoyer toutes les données, il peut être plus rapide de recréer une collection, par exemple.

solrctl --zk localhost:2181/solr collection --delete <collectionName>
solrctl --zk localhost:2181/solr collection --create <collectionName> -s 1
1
Tagar

Depuis la ligne de commande, utilisez:

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

Les exemples de curl ont surtout échoué pour moi lorsque je les ai exécutés à partir d’un terminal cygwin. Il y avait des erreurs comme celle-ci lorsque j'ai exécuté l'exemple de script. 

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>

J'avais besoin d'utiliser la suppression dans une boucle sur les noms principaux pour les effacer tous dans un projet.

Cette requête ci-dessous a fonctionné pour moi dans le script de terminal 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>

Cette ligne a fait disparaître les données et le changement a persisté.

1
ndasusers

Solr je ne suis pas sûr mais vous pouvez supprimer toutes les données de hbase en utilisant la commande troncature comme ci-dessous

truncate 'table_name'

Il supprimera toutes les lignes de la table hbase.

0
Kapil

Lorsque vous effacez un index Solr, vous devez également effectuer une validation et une optimisation après avoir exécuté la requête delete-all. Toutes les étapes sont requises (tout ce dont vous avez besoin, c'est le curl): http://www.alphadevx.com/a/365- Clearing-a-Solr-search-index

0
alphadevx

J'ai créé un signet JavaScript qui ajoute le lien de suppression dans l'interface utilisateur de Solr Admin.

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

Si vous utilisez Cloudera 5.x, il est mentionné dans cette documentation que Lily gère également les mises à jour et les suppressions en temps réel.

Configuration du service d'indexation Lily HBase NRT pour une utilisation avec Cloudera Search

Lorsque HBase applique des insertions, des mises à jour et des suppressions aux cellules du tableau HBase, l'indexeur maintient Solr en cohérence avec le contenu de la table HBase, en utilisant réplication HBase standard.

Pas sûr que sitruncate 'hTable' soit également supporté de la même manière.

Sinon, vous créez un déclencheur ou un service pour effacer vos données de Solr et HBase sur un événement particulier ou quoi que ce soit.

0