Cómo eliminar todos los datos de solr y hbase

Respuestas:

190

Si desea limpiar el índice de Solr -

puede disparar http url -

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

(reemplácelo [core name]con el nombre del núcleo del que desea eliminar). O use esto si publica datos xml datos:

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

Asegúrese de utilizar commit=truepara confirmar los cambios

Sin embargo, no tengo mucha idea sobre cómo borrar los datos de hbase.

Jayendra
fuente
7
core es necesario si está utilizando una configuración multinúcleo.
Jayendra
1
Esta respuesta analiza cómo eliminar todas las tablas en hbase: stackoverflow.com/questions/3990952/… . Si solo desea eliminar los datos de la tabla, puede truncarlos en lugar de eliminarlos.
codingFoo
¿solo borra el índice? ¿O también borrará los datos reales?
vishnu viswanath
6
Es posible que desee agregar &commit=truea la consulta para que se convierta en http://host:port/solr/core/update?stream.body=<delete><query>*:*</query></delete>&commit=trueSin ella, me preguntaba por qué no se eliminaron todos los documentos.
chris544
2
No funciona. Recibo: HTTP ERROR 404 Problema al acceder a / solr / update. Razón: No encontrado de solr ...
Stepan Yakovenko
91

He utilizado esta solicitud para eliminar todos mis registros, pero a veces es necesario confirmar esto.

Para eso, agregue &commit=truea su solicitud:

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

Puede utilizar los siguientes comandos para eliminar. Utilice la consulta "coincidir con todos los documentos" en un comando de eliminación por consulta:

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

También debe confirmar después de ejecutar la eliminación, por lo que, para vaciar el índice, ejecute los siguientes dos comandos:

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'

Otra estrategia sería agregar dos marcadores en su navegador:

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


Documentos fuente de SOLR:
https://wiki.apache.org/solr/FAQ#How_can_I_delete_all_documents_from_my_index.3F

Navjot Bhardwaj
fuente
10

Publicar datos json (por ejemplo, con curl)

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

Si desea eliminar todos los datos en Solr a través de SolrJ, haga algo como esto.

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 desea eliminar todos los datos en HBase, haga algo como esto.

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);
    }
 }
Ratabora
fuente
4

Utilice la consulta "coincidir con todos los documentos" en un comando de eliminación por consulta :

También debe confirmar después de ejecutar la eliminación, por lo que, para vaciar el índice, ejecute los siguientes dos comandos:

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'
Nanhe Kumar
fuente
Funcionó bien con <core>definido en la URL. Edité la respuesta.
Achala Dissanayake
4

Desde la línea de comando, use:

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

Vine aquí buscando eliminar todos los documentos de la instancia de solr a través de .Net framework usando SolrNet. Así es como pude hacerlo:

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

Esto ha borrado todos los documentos. (No estoy seguro de si esto podría recuperarse, estoy en la fase de aprendizaje y prueba de Solr, así que considere hacer una copia de seguridad antes de usar este código)

Habib
fuente
Esto es muy útil. Gracias !
Karan
3

dispara esto en el navegador

http://localhost:8983/solr/update?stream.body=<delete><query>*:*</query></delete>&commit=true este comando eliminará todos los documentos en el índice en solr

bittu
fuente
Si pudiera editar su respuesta y explicar qué hace el código que está mostrando, y por qué / cómo ese código responde a la pregunta, realmente podría ayudar.
Lea Cohen
¿La respuesta anterior está bien ahora?
bittu
Ciertamente se entiende más :).
Lea Cohen
2

He utilizado esta consulta para eliminar todos mis registros.

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

Probé los siguientes pasos. Funciona bien.

  • Asegúrese de que el servidor SOLR esté funcionando
  • Simplemente haga clic en el enlace Eliminar todos los datos de SOLR que aparecerán y eliminará todos sus datos indexados de SOLR, luego obtendrá los siguientes detalles en la pantalla como salida.

    <response>
      <lst name="responseHeader">
        <int name="status">0</int>
        <int name="QTime">494</int>
      </lst>
    </response>
  • Si no obtiene el resultado anterior, asegúrese de lo siguiente.

    • Usé el predeterminado host(localhost) y port(8080) en el enlace anterior. Modifique el host y el puerto si es diferente en su extremo.
    • El nombre del núcleo predeterminado debe ser collection/ collection1. Usé collection1en el enlace de arriba. cámbielo también si su nombre principal es diferente.
Ganesa Vijayakumar
fuente
1

Si necesita limpiar todos los datos, podría ser más rápido volver a crear la colección, por ejemplo

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

Los ejemplos de curl anteriores me fallaron cuando los ejecuté desde una terminal cygwin. Hubo errores como este cuando ejecuté el ejemplo 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>

Necesitaba usar la eliminación en un bucle en los nombres principales para eliminarlos a todos en un proyecto.

Esta consulta a continuación funcionó para mí en el 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>

Esta única línea hizo que los datos desaparecieran y el cambio persistió.

ndasusers
fuente
1

Solr, no estoy seguro, pero puede eliminar todos los datos de hbase usando el comando truncar como se muestra a continuación:

truncate 'table_name'

Eliminará todas las claves de fila de la tabla hbase.

Kapil
fuente
0

Hice un marcador de JavaScript que agrega el enlace de eliminación en la interfaz de usuario 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>');
})();

ingrese la descripción de la imagen aquí

MyroslavN
fuente
0

Si está utilizando Cloudera 5.x, aquí en esta documentación se menciona que Lily también mantiene las actualizaciones y eliminaciones en tiempo real.

Configuración del servicio de indexación Lily HBase NRT para su uso con Cloudera Search

A medida que HBase aplica inserciones, actualiza y elimina las celdas de la tabla HBase, el indexador mantiene a Solr coherente con el contenido de la tabla HBase, utilizando la replicación HBase estándar.

No estoy seguro si truncate 'hTable'también es compatible con el mismo.

De lo contrario, crea un Activador o Servicio para borrar sus datos tanto de Solr como de HBase en un Evento en particular o cualquier cosa.

Murtaza Kanchwala
fuente
0

Para eliminar todos los documentos de una colección Solr, puede utilizar esta solicitud:

curl -X POST -H 'Content-Type: application/json' --data-binary '{"delete":{"query":"*:*" }}' http://localhost:8983/solr/my_collection/update

Utiliza el cuerpo JSON.

youhans
fuente
Como han señalado otros, probablemente sea mejor usarlo /update?commit=true. El cuerpo de la solicitud JSON funciona muy bien :)
Frederick Zhang