Удалить или удалить старые данные из эластичного поиска

Как удалить старые данные из индекса эластичного поиска, так как в индекс ежедневно вставляется большой объем данных.


person sri    schedule 09.12.2015    source источник
comment
Почему за этот вопрос проголосовали?   -  person slim    schedule 01.07.2016


Ответы (3)


Вы можете сделать это с помощью удалить по запросу плагин.

Предполагая, что в вашем индексе есть поле timestamp или creation date, ваш запрос будет выглядеть примерно так:

DELETE /your_index/your_type/_query
{
  "query": {
    "range": {
      "timestamp": {
        "lte": "now-10y"
      }
    }
  }
}

Это приведет к удалению записей старше 10 лет.

надеюсь, это поможет

person ChintanShah25    schedule 09.12.2015
comment
Есть ли способ сделать это в виде скрипта, чтобы нам не приходилось запускать запрос вручную? - person sri; 09.12.2015
comment
Этот запрос на удаление полностью удаляет записи из индекса и оставляет место для вставки новых записей - person sri; 09.12.2015
comment
Вы можете настроить cron job, чтобы делать это ежедневно, записи не стираются после выполнения удаления, они помечаются как удаленные, а при объединении сегментов они фактически удаляются, вы можете увидеть увеличение размера индекса после удаления или обновления, вы можете использовать принудительное слияние для оптимизации вашего индекса - person ChintanShah25; 09.12.2015
comment
Что такое объединение сегментов? После объединения сегментов размер индекса уменьшился - person sri; 09.12.2015
comment
просмотрите это, чтобы понять слияние сегментов, вы не можете уменьшить размер таким образом, после объединения сегментов просто удаленных данных не будет. Также прочитайте о том, как работает elasticsearch, чтобы лучше понять . - person ChintanShah25; 09.12.2015

Разделите данные на ежедневные индексы и используйте псевдоним в качестве имени старого индекса. затем удаляйте каждый индекс ежедневно. так же, как logstash:

Ежедневные индексы:logstash-20151011,logstash-20151012,logstash-20151013.

Полный псевдоним: logstash

Затем ежедневно удаляйте последний индекс.

person Ali Nikneshan    schedule 09.12.2015
comment
Использование нескольких индексов — это правильный путь. Чтобы удалить старые индексы, вы можете использовать куратор: elastic. co/guide/en/elasticsearch/client/curator/current/ - person slim; 01.07.2016
comment
это лучший ответ - person Luc E; 03.09.2020

Если вы используете временные индексы, это должно выглядеть примерно так:

curl -XDELETE http://localhost:9200/test-2017-06
person Atif Hussain    schedule 12.07.2021