Удалить/удалить проиндексированный документ в ElasticSearch с помощью Tire (с обратимым удалением через ActsAsParanoid)

У меня есть сервер ElasticSearch, который индексирует и ищет документы, используя отличный гем Tire. Все отлично работает, за исключением того, что я не уверен, как вручную удалить документы из поискового индекса.

Я пролистал RDoc и искал часами, но это единственный намек на решение, которое я могу найти https://github.com/karmi/tire/issues/309. Есть ли более простой способ, кроме создания пользовательской оболочки вокруг завитка и выполнения запроса вручную?

Еще одна загвоздка заключается в том, что я использую драгоценный камень мягкого удаления под названием ActsAsParanoid, поэтому обратные вызовы Tire::Model::Callbacks не удалят объект при программном удалении.

Любые идеи?


person thoughtpunch    schedule 09.10.2012    source источник


Ответы (2)


Если у вас есть только идентификатор (например, 12345):

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

Или в более общем плане:

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

(что, я думаю, эквивалентно тому, что remove @user будет делать за кулисами)

ссылка

person mahemoff    schedule 05.09.2013

Оказывается, вы можете просто вручную удалить мягко удаленный объект из индекса следующим образом:

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

Вот и все!

person thoughtpunch    schedule 09.10.2012