1

Я обновил свой elasticsearch до 2.0 version в моем приложении rails 4.2.7 и пытаюсь удалить все данные индекса, используя плагин delete-by-query. Как я могу достичь этого?
я использовал delete_by_query метод как этотКак удалить все данные из индекса, используя плагин delete_ by_query с версиями ES 2.X в приложении rails?

Elasticsearch::Model.client 
        .delete_by_query(index: index_klass.index_name, 
            body: {query: {match_all: {}}}) 

Но это не рекомендуется в версиях 2.X ES. так как я могу использовать плагин для этого. заранее спасибо.

ответ

1

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

Удаление документов помечает их как удаленные, но фактически не физически удаляет их с диска. Когда происходит процесс автоматического слияния Elasticsearch, они фактически будут удалены. Но процесс слияния будет рассматривать определенные файлы сегментов только для удаления, и, безусловно, вы все равно будете использовать дисковое пространство для индекса, у которого нет документов. Подробнее о слиянии сегментов: https://www.elastic.co/guide/en/elasticsearch/guide/current/merge-process.html и многое другое об удалении этих документов при времени слияния - https://www.elastic.co/blog/lucenes-handling-of-deleted-documents

Итак, вы должны намного лучше, просто удалив индекс и воссоздав его.

+0

Спасибо @ Andrei Stefan –

1

У вас есть два решения:

  1. обновление до ES 5.0, который принес delete-by-query API обратно в ядро.
  2. пребывание на 2.x и установить delete-by-query plugin

После этого, вы код будет работать снова.

+0

Я уже установил этот плагин. но я не знаю, как использовать его в приложении rails.? –

+0

Плагин установлен на стороне ES, вам не нужно ничего делать на стороне рельсов, чтобы он работал. – Val

+0

Думаю, мне нужно использовать какой-то запрос или метод, чтобы сделать это правильно? как я упомянул в своем посте? исправьте меня, если я ошибаюсь. –

Смежные вопросы