Использование Logstash для удаления индекса из ES

Я хочу удалить индекс из ES перед загрузкой обновленной версии данных из MySQL, На сегодняшний день я использую curl для удаления данных и Logstash для загрузки, однако мне было интересно, есть ли способ, где мне не нужно делать это вручную, лучше всего иметь возможность использовать Logstash (с его планировщиком), чтобы получить его полностью автоматический. Скажите, есть ли способ просто написать что-то в моем конфигурационном файле, чтобы сделать это?

Как я удаляю сегодня:

curl -X -DELETE 'http://localhost:9200/index'

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

1 ответ

Решение

Вы можете создать командный файл, который запускает процесс logstash и кураторские действия вместе.

Скачайте и установите куратор с помощью инструкции. Используйте командную строку куратора для выполнения действий над индексами. Для удаления проверьте действие Удалить индексы.

action: delete_indices
description: >-
  Delete indices older than 45 days (based on index name), for logstash-
  prefixed indices. Ignore the error if the filter does not result in an
  actionable list of indices (ignore_empty_list) and exit cleanly.
options:
  ignore_empty_list: True
  disable_action: True
filters:
- filtertype: pattern
  kind: prefix
  value: %{Index_Name}
- filtertype: age
  source: name
  direction: older
  timestring: '%Y.%m.%d'
  unit: days
  unit_count: 45

Источник - Пример удаления индексов

Другие вопросы по тегам