Удалить несколько индексов в одном 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