2011-10-11 17 views

Respuesta

141

Si desea limpiar índice de Solr -

puede disparar http url -

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

(sustituir [core name] con el nombre del núcleo que desea eliminar de) . O usar esto si la publicación de los datos XML de datos:

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

asegúrese de usar commit=true para confirmar los cambios

no tienen mucha idea con los datos de compensación hbase sin embargo.

+7

núcleo si está utilizando la configuración de múltiples núcleos. – Jayendra

+1

Esta respuesta describe cómo eliminar todas las tablas en hbase: http://stackoverflow.com/questions/3990952/a-script-that-deletes-all-tables-in-hbase. Si solo desea eliminar los datos de la tabla, puede truncarlos en lugar de soltarlos. – codingFoo

+0

¿solo elimina el índice? ¿o eliminará los datos reales también? –

88

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

Por eso, añadir &commit=true para su solicitud:

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

Si desea borrar todos los datos en Solr vía SolrJ hacer 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); 
    } 
} 
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 ser recuperado, estoy en el aprendizaje y la fase de prueba de Solr, así que por favor considero copia de seguridad antes de utilizar este código)

+0

Esto es muy útil. Gracias ! – Karan

3

fuego en el navegador

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

+0

Si pudieras por favor editar tu respuesta y explicar qué hace el código que estás mostrando, y por qué/cómo responde ese código a la pregunta, realmente podría ser útil. –

+0

es la respuesta anterior ok ahora ...? – bittu

+0

Sin duda es más entendido :). –

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 
3

Utilice el "coincidir todos los docs" consulta en una eliminación por comando de consulta: :

También debe comprometerse después de ejecutar el eliminar así, para vaciar el índice, ejecute los dos comandos siguientes:

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' 
0

hice un marcador JavaScript que se suma el enlace de eliminación en Solr interfaz de usuario 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

7

Puede utilizar los siguientes comandos para eliminar. Utilice el "coincidir todos los docs" consulta en una eliminación por comando de consulta:

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

También debe comprometerse después de ejecutar el borrado así, para vaciar el índice, ejecute los dos comandos siguientes:

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 añadir dos marcadores en el navegador:

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


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

+0

Si bien este enlace puede responder la pregunta, es mejor incluir las partes esenciales de la respuesta aquí y proporcionar el enlace de referencia. Las respuestas de solo enlace pueden dejar de ser válidas si la página vinculada cambia. - [De la crítica] (/ review/low-quality-posts/10148166) – Jost

1

que he usado 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 
1

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

que necesitaba usar el eliminar en un bucle sobre los nombres fundamentales para limpiar todos estos elementos en un proyecto.

Esta consulta a continuación me funcionó en el script de terminal de 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 línea hizo desaparecer los datos y el cambio persistió.

0

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

Configuring the Lily HBase NRT Indexer Service for Use with Cloudera Search

Como HBase aplica inserciones, actualizaciones, y elimina a celdas de tabla HBase, el indizador mantiene Solr consistente con los contenidos de la tabla HBase, utilizando replicación estándar HBase.

No estoy seguro si también admite truncate 'hTable'.

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

2

Los datos posteriores JSON (por ejemplo, con rizo) es necesario

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