Куратор для удаления индексов старше 30 дней и более на основе поля, которое не относится к типу даты
{
"_index": "user:1494813192000",
"_type": "fruits",
"_id": "pbyac5r88-yghe-v1ez-cpgb-sqdjipr54alzgj/tp4oqalbd-bo2v-ikj1-atfq-wezcoeeuf6wiqpt/apple",
"_score": 1,
"_routing": "pbyac5r88-yghe-v1ez-cpgb-sqdjipr54alzgj",
"_source": {
"numCal": 442,
"eventTime": 1497315192000,
"fruitName": "apple"
}
Вот так выглядит индекс в моем эластичном поиске. EventTime - текущее время в мс, основанное на UTC. Я хотел бы использовать это поле, чтобы удалить мои индексы с помощью куратора.
Вот так выглядит мой ACTION_FILE.YML
actions:
1:
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
timeout_override:
continue_if_exception: False
disable_action: False
filters:
- filtertype: age
source: field_stats
field: 'eventTime'
direction: older
unit: days
unit_count: 30
exclude:
Поддерживает ли куратор удаление на основе полей, которые не в формате данных?
1 ответ
Первоначально я ответил на этот вопрос здесь, но включите его и здесь.
Сравнение даты и времени работает в кураторе на основе времени эпохи. Поскольку Elasticsearch хранит записи даты внутри как значения эпох, именно поэтому обычно требуется использовать поле, которое хранится в качестве отметки даты, при использовании field_stats
для сравнения.
Однако, если поле эпохи времени, которое правильно отображается как long
в Elasticsearch, и хранит либо эпоху, либо эпоху плюс миллисекунды (но не десятичные), он должен прекрасно работать для использования с field_stats
,
Для справки, код, демонстрирующий этот принцип, находится здесь.