Как использовать жадные регулярные выражения на кураторском фильтре? - PullRequest
0 голосов
/ 26 октября 2018

Я настроил куратор для удаления старых индексов Elasticsearch с помощью этого фильтра:

(...)
filters:
- filtertype: pattern
  kind: regex
  value: '^xyz-us-(prod|preprod)-(.*)-'
  exclude:
- filtertype: age
  source: name
  direction: older
  timestring: '%Y.%m.%d'
  unit: days
  unit_count: 7
  exclude:
(...)

Однако я понял, что куратор использует не жадные регулярные выражения, потому что этот фильтр ловит индекс xyz-us-prod-foo-2018.10.11, но не xyz-us-prod-foo-bar-2018.10.11.

Как я могу изменить фильтр, чтобы перехватить оба индекса?

Ответы [ 2 ]

0 голосов
/ 30 октября 2018

Ответ, который я дал на https://discuss.elastic.co/t/use-greedy-regexes-in-curator-filter/154200, все еще хорош, хотя вы почему-то не смогли получить результаты, которые я разместил там. Привязка конца и указание даты сработало для меня: '^xyz-us-(prod|preprod)-.*-\d{4}\.\d{2}\.\d{2}$'

Я создал эти индексы:

PUT xyz-us-prod-foo-2018.10.11
PUT xyz-us-prod-foo-bar-2018.10.11
PUT xyz-us-preprod-foo-2018.10.12
PUT xyz-us-preprod-foo-bar-2018.10.12

И побежал с этим конфигом:

---
actions:
  1:
    action: delete_indices
    filters:
    - filtertype: pattern
      kind: regex
      value: '^xyz-us-(prod|preprod)-.*-\d{4}\.\d{2}\.\d{2}$'
      exclude:
    - filtertype: age
      source: name
      direction: older
      timestring: '%Y.%m.%d'
      unit: days
      unit_count: 7

Результаты полностью соответствуют:

2018-10-29 20:08:28,120 INFO               curator.utils           show_dry_run:928  DRY-RUN: delete_indices: xyz-us-preprod-foo-2018.10.12 with arguments: {}
2018-10-29 20:08:28,120 INFO               curator.utils           show_dry_run:928  DRY-RUN: delete_indices: xyz-us-preprod-foo-bar-2018.10.12 with arguments: {}
2018-10-29 20:08:28,120 INFO               curator.utils           show_dry_run:928  DRY-RUN: delete_indices: xyz-us-prod-foo-2018.10.11 with arguments: {}
2018-10-29 20:08:28,120 INFO               curator.utils           show_dry_run:928  DRY-RUN: delete_indices: xyz-us-prod-foo-bar-2018.10.11 with arguments: {}
0 голосов
/ 27 октября 2018

Реализация движка Regex в кураторе использует флаг U (Ungreedy).

Неправильные регулярные выражения делают звездные квантификаторы ленивыми по умолчанию, добавляя «?»модификатор под опцией Ungreedy вернул бы его обратно к Greedy.

Попробуйте добавить '?'после '. *' в вашем регулярном выражении

'^xyz-us-(prod|preprod)-(.***?**)-'
...