2012-10-09 15 views
6

Tengo un servidor ElasticSearch ejecutando los índices y documentos buscados utilizando la excelente joya Tire. Todo funciona muy bien, excepto que no estoy seguro de cómo eliminar manualmente los documentos del índice de búsqueda.Eliminar/Eliminar un documento indexado en ElasticSearch con Tire (con eliminación suave a través de ActsAsParanoid)

He echado sobre el RDoc y buscado durante horas, pero este es el único indicio de una solución que puedo encontrar https://github.com/karmi/tire/issues/309. ¿Hay alguna otra manera más sencilla que construir un contenedor personalizado alrededor de Curl y hacer la solicitud manualmente?

Otro problema es que utilizo una gema de eliminación suave llamada ActsAsParanoid, por lo que Tire :: Model :: Callbacks no eliminará el objeto en soft-delete.

¿Alguna idea?

Respuesta

6

Resulta que sólo se puede quitar manualmente el objeto eliminado temporalmente a partir del índice de este modo:

@user = User.find(id) #or whatever your indexed object is 
User.tire.index.remove @user #this will remove them from the index 

Eso es todo!

10

En caso de que sólo tienen el ID (por ejemplo, 12345):

User.tire.index.remove 'user', '12345' 

o más en general:

klass.tire.index.remove klass.document_type, record_id 

(que creo que es equivalente a lo que remove @user hará detrás de las escenas)

reference

Cuestiones relacionadas