¿Cómo elimino todos los datos solr
por comando? Estamos usando solr
con lily
yhbase
.
¿Cómo puedo eliminar datos tanto de hbase como de solr?
http://lucene.apache.org/solr/4_10_0/tutorial.html#Deleting+Data
¿Cómo elimino todos los datos solr
por comando? Estamos usando solr
con lily
yhbase
.
¿Cómo puedo eliminar datos tanto de hbase como de solr?
http://lucene.apache.org/solr/4_10_0/tutorial.html#Deleting+Data
Respuestas:
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=true
para confirmar los cambios
Sin embargo, no tengo mucha idea sobre cómo borrar los datos de hbase.
&commit=true
a la consulta para que se convierta en http://host:port/solr/core/update?stream.body=<delete><query>*:*</query></delete>&commit=true
Sin ella, me preguntaba por qué no se eliminaron todos los documentos.
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
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);
}
}
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'
<core>
definido en la URL. Edité la respuesta.
Desde la línea de comando, use:
bin/post -c core_name -type text/xml -out yes -d $'<delete><query>*:*</query></delete>'
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)
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
Probé los siguientes pasos. Funciona bien.
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.
host
(localhost) y port
(8080) en el enlace anterior. Modifique el host y el puerto si es diferente en su extremo.collection
/ collection1
. Usé collection1
en el enlace de arriba. cámbielo también si su nombre principal es diferente.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ó.
Al borrar un índice de Solr, también debe realizar una confirmación y optimizar después de ejecutar la consulta de eliminación total. Se requieren pasos completos (curl es todo lo que necesita): http://www.alphadevx.com/a/365-Clearing-a-Solr-search-index
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>');
})();
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.
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.
/update?commit=true
. El cuerpo de la solicitud JSON funciona muy bien :)