Выражения 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и специальные символы,-*/?LW -
<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