Spec-Zone.ru › Elasticsearch 7
›Руководство по Elasticsearch [7.17] ›REST API ›Конвенции API

Выражения cron

Выражение cron — это строка следующего формата:

    <seconds> <minutes> <hours> <day_of_month> <month> <day_of_week> [year]

Elasticsearch использует анализатор cron из Quartz Job Scheduler. Дополнительную информацию о написании выражений cron для Quartz см. в руководстве по Quartz CronTrigger.

Все временные точки указаны в координированном универсальном времени (UTC); другие часовые пояса не поддерживаются.

Для проверки выражений cron можно использовать утилиту командной строки elasticsearch-croneval.

Элементы выражения cron

Все элементы обязательны, за исключением year. См. специальные символы cron для получения информации о разрешенных специальных символах.

<seconds>
(Обязательно) Допустимые значения: 0-59 и специальные символы , - * /
<minutes>
(Обязательно) Допустимые значения: 0-59 и специальные символы , - * /
<hours>
(Обязательно) Допустимые значения: 0-23 и специальные символы , - * /
<day_of_month>
(Обязательно) Допустимые значения: 1-31 и специальные символы , - * / ? L W
<month>
(Обязательно) Допустимые значения: 1-12, JAN-DEC, jan-dec, и специальные символы , - * /
<day_of_week>
(Обязательно) Допустимые значения: 1-7, SUN-SAT, sun-sat, и специальные символы , - * / ? L #
<year>
(Необязательно) Допустимые значения: 1970-2099 и специальные символы , - * /

Специальные символы cron

*
Выбирает все возможные значения для поля. Например, * в поле hours означает "каждый час".
?
Нет конкретного значения. Используйте, когда вам неважно какое значение. Например, если вы хотите, чтобы расписание запускалось в определенный день месяца, но неважно какой день недели, вы можете указать ? в поле day_of_week.
-
Диапазон значений (включительно). Используйте для разделения минимального и максимального значения. Например, если вы хотите, чтобы расписание запускалось каждый час с 9:00 до 17:00, вы можете указать 9-17 в поле hours.
,
Несколько значений. Используйте для разделения нескольких значений для поля. Например, если вы хотите, чтобы расписание запускалось по вторникам и четвергам, вы можете указать TUE,THU в поле day_of_week.
/
Приращение. Используйте для разделения значений при указании приращения времени. Первое значение представляет начальную точку, а второе — интервал. Например, если вы хотите, чтобы расписание запускалось каждые 20 минут, начиная с начала часа, вы можете указать 0/20 в поле minutes. Аналогично, указание 1/5 в поле day_of_month запустит расписание каждые 5 дней, начиная с первого дня месяца.
L
Последний. Используйте в поле day_of_month для обозначения последнего дня месяца — 31 для января, 28 для февраля в невисокосном году, 30 для апреля и т.д. Используйте самостоятельно в поле day_of_week вместо 7 или SAT, или после конкретного дня недели, чтобы выбрать последний день такого типа в месяце. Например, 6L означает последний пятницу месяца. Можно указать LW в поле day_of_month, чтобы указать последний рабочий день месяца. Избегайте использования опции L при указании списков или диапазонов значений, так как результаты, вероятно, не будут такими, как вы ожидаете.
W
День недели. Используйте для указания дня недели (понедельник-пятница) ближайшего к заданному дню. Например, если вы укажете 15W в поле day_of_month, а 15-е число — суббота, расписание будет запускаться 14-го числа. Если 15-е число — воскресенье, расписание будет запускаться в понедельник 16-го числа. Если 15-е число — вторник, расписание будет запускаться во вторник 15-го числа. Однако, если вы укажете 1W в качестве значения для day_of_month, а 1-е число — суббота, расписание запустится в понедельник 3-го числа — оно не перепрыгнет границу месяца. Можно указать LW в поле day_of_month, чтобы указать последний рабочий день месяца. Опцию W можно использовать только тогда, когда day_of_month — это один день — она недействительна при указании диапазона или списка дней.
#
N-ый XXX день в месяце. Используйте в поле day_of_week для указания n-ого XXX дня месяца. Например, если вы укажете 6#1, расписание запустится в первый пятницу месяца. Обратите внимание, что если вы укажете 3#5, а в конкретном месяце не будет 5 вторников, расписание в этом месяце не запустится.

Примеры

Установка ежедневных триггеров

0 5 9 * * ?
Запуск в 9:05 утра UTC каждый день.
0 5 9 * * ? 2020
Запуск в 9:05 утра UTC каждый день в 2020 году.

Ограничение триггеров диапазоном дней или времени

0 5 9 ? * MON-FRI
Запуск в 9:05 утра UTC с понедельника по пятницу.
0 0-5 9 * * ?
Запуск каждую минуту, начиная с 9:00 утра UTC и заканчивая 9:05 утра UTC каждый день.

Установка триггеров с интервалом

0 0/15 9 * * ?
Запуск каждые 15 минут, начиная с 9:00 утра UTC и заканчивая 9:45 утра UTC каждый день.
0 5 9 1/3 * ?
Запуск в 9:05 утра UTC каждые 3 дня каждого месяца, начиная с первого числа месяца.

Установка расписаний, которые запускаются в определенный день

0 1 4 1 4 ?
Запуск 1 апреля в 4:01 утра UTC.
0 0,30 9 ? 4 WED
Запуск в 9:00 утра UTC и в 9:30 утра UTC каждую среду апреля.
0 5 9 15 * ?
Запуск в 9:05 утра UTC 15-го числа каждого месяца.
0 5 9 15W * ?
Запуск в 9:05 утра UTC ближайшим к 15-му числу каждого месяца рабочим днём.
0 5 9 ? * 6#1
Запуск в 9:05 утра UTC в первую пятницу каждого месяца.

Установка триггеров с помощью last

0 5 9 L * ?
Запуск в 9:05 утра UTC в последний день каждого месяца.
0 5 9 ? * 2L
Запуск в 9:05 утра UTC в последний понедельник каждого месяца.
0 5 9 LW * ?
Запуск в 9:05 утра UTC в последний рабочий день каждого месяца.

© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/7.17/cron-expressions.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API