Удалить несколько индексов в одном HTTP-запросе Elasticsearch (cURL)

Я использовал это curl командная строка для очистки моих индексов:

curl -XDELETE http://example.com/my_index-*

Но сейчас я хочу удалить my_index-.*[.][0-3][0-9]:

  • только удалить my_index-YYYY.MM.dd
  • хранить my_index-YYYY.MM.dd-*

Соответствующую документацию Elasticsearch я нашел:

  • API удаления индекса ничего не говорит о регулярных выражениях.

  • Несколько индексов говорит:

    Также поддерживаются подстановочные знаки, например: test* или же *test или же te*t или же *test* и возможность "добавить" (+) и "удалить" (-), например: +test*,-test3,

  • Дата поддержки математики в именах индексов говорит:

    Почти все API, которые имеют index параметр, дата поддержки математика в index значение параметра.
    [...]
    date_format это необязательный формат, в котором вычисляемая дата должна отображаться. По умолчанию YYYY.MM.dd,


Мои вопросы:

  • Можно ли отправить DELETE метод запроса к HTTP-серверу Elasticsearch для удаления только отформатированных индексов my_index-YYYY.MM.dd ?
  • Или наоборот, чтобы удалить все my_index-* но сохраняя my_index-*-* ?

Например, регулярное выражение иногда может быть предоставлено в POST данные:

curl -XPOST http://example.com/my_index-2017.07.14/_search?pretty' -H 'Content-Type: application/json' -d'
{
    "suggest": {
        "song-suggest" : {
            "regex" : "n[ever|i]r",
            "completion" : {
                "field" : "suggest"
            }
        }
    }
}'

1 ответ

Короткий ответ

Удалить все индексы my_index-* кроме индексов my_index-*-*

curl -X DELETE http://es.example.com/my_index-*,-my_index-*-*

Нет регулярных выражений

Elasticsearch 5.x не принимает регулярные выражения или шаблоны имен файлов ?[a-z] выбрать несколько индексов.

Однако документация с несколькими индексами позволяет + а также - включать и исключать индексы.

Скрипт для предотвращения случайного удаления индексов my_index-*-*:

#!/bin/bash -xe
pattern="${1:-*}"
curl -X DELETE https://es.example.com/my_index-"$pattern",-my_index-*-*?pretty

объяснение

  • Параметр index может содержать разделенный запятыми список шаблонов индекса, например my_index_1,my_index_2,my_index_3,
  • Шаблон индекса основан на символах подстановки, например my_index*,
  • Чтобы включить и исключить индексы, используйте + а также - в качестве префикса индекса, например my_index_*,-my_index_2017*,+my_index_2017-01*,-my_index_2017-01-31,
  • Не нужно использовать + по первому индексу

Описанный пример

это DELETE запрос удаляет все индексы my_index_* до my_index_2017-01-31

index_list='my_index_*,-my_index_2017*,+my_index_2017-01*,-my_index_2017-01-31'
curl -X DELETE http://es.example.com/"$index_list"
  • Удалить все my_index_*
  • Кроме my_index_2017*
  • удалять my_index_2017-01*
  • Кроме my_index_2017-01-31
Другие вопросы по тегам