Как удалить старые данные из индекса эластичного поиска, так как в индекс ежедневно вставляется большой объем данных.
Удалить или удалить старые данные из эластичного поиска
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
Есть ли способ сделать это в виде скрипта, чтобы нам не приходилось запускать запрос вручную?
- person sri; 09.12.2015
Этот запрос на удаление полностью удаляет записи из индекса и оставляет место для вставки новых записей
- person sri; 09.12.2015
Вы можете настроить
cron job
, чтобы делать это ежедневно, записи не стираются после выполнения удаления, они помечаются как удаленные, а при объединении сегментов они фактически удаляются, вы можете увидеть увеличение размера индекса после удаления или обновления, вы можете использовать принудительное слияние для оптимизации вашего индекса
- person ChintanShah25; 09.12.2015
Что такое объединение сегментов? После объединения сегментов размер индекса уменьшился
- person sri; 09.12.2015
просмотрите это, чтобы понять слияние сегментов, вы не можете уменьшить размер таким образом, после объединения сегментов просто удаленных данных не будет. Также прочитайте о том, как работает elasticsearch, чтобы лучше понять .
- person ChintanShah25; 09.12.2015
Разделите данные на ежедневные индексы и используйте псевдоним в качестве имени старого индекса. затем удаляйте каждый индекс ежедневно. так же, как logstash:
Ежедневные индексы:logstash-20151011
,logstash-20151012
,logstash-20151013
.
Полный псевдоним: logstash
Затем ежедневно удаляйте последний индекс.
person
Ali Nikneshan
schedule
09.12.2015
Использование нескольких индексов — это правильный путь. Чтобы удалить старые индексы, вы можете использовать куратор: elastic. co/guide/en/elasticsearch/client/curator/current/
- person slim; 01.07.2016
это лучший ответ
- person Luc E; 03.09.2020
Если вы используете временные индексы, это должно выглядеть примерно так:
curl -XDELETE http://localhost:9200/test-2017-06
person
Atif Hussain
schedule
12.07.2021