Elasticsearch- это бесплатный поисковый и аналитический движок с открытым исходным кодом, на котором основан стек ELK. Elasticsearch позволяет различным конвейерам данных, использующим такие инструменты, как Logstash, собирать и агрегировать данные. Затем Elasticsearch хранит предоставленные данные, позволяя приложениям получать доступ, искать, сортировать и фильтровать большие объемы данных практически в режиме реального времени. Elasticsearch также позволяет визуализировать различные данные с помощью встроенных инструментов.
Такие возможности делают Elasticsearch очень подходящим для поиска и сортировки больших объемов данных с минимальной задержкой или вообще без нее. Поэтому, создаете ли вы поисковую систему или анализируете журналы, метрики и другие текстовые данные, Elasticsearch - отличный выбор.
В основе Elasticsearch лежит индекс. Индекс - это блок, отвечающий за хранение документов в Elasticsearch. Индекс относительно эквивалентен базе данных в контексте реляционных баз данных. Например, вы можете иметь индекс, в котором хранятся все данные журналов веб-приложения.
Как и в случае со всеми базами данных, вы можете столкнуться со сценарием, когда вам нужно удалить все данные из кластера, что позволит вам начать с чистого листа.
В этой статье показано, как использовать возможности Elasticsearch API для удаления всех индексов из кластера.
Методы и приемы, используемые в этой статье, приведут к потере данных. Мы не несем ответственности за любую потерю данных, которая может произойти из-за инструкций, приведенных в этой статье.
API Elasticsearch Delete Index
Если вы начинаете работать с Elasticsearch, вам необходимо знать, как выполнять основные вызовы API. Это связано с тем, что Elasticsearch использует API по максимуму.
Как вы уже догадались, мы используем API Delete Index для удаления индекса из кластера. Синтаксис запросов на удаление индекса выглядит следующим образом:
1 | DELETE /[index] |
Запрос удаляет указанный индекс и сохраненные в нем документы, шарды и все метаданные.
Следует помнить, что при этом не удаляются компоненты Kibana, связанные с указанным индексом, такие как представления данных и т.д.
Вы можете указать один или несколько индексов, разделяя их запятыми.
1 | DELETE /index_name |
1 | DELETE /index1,index2,index3...indexN |
Elasticsearch не позволяет вам использовать псевдоним Index при удалении индекса. Вместо этого необходимо использовать имя индекса.
К примеру
1 | curl -XDELETE http://127.0.0.1:9200/index_name |
Пример 1: Удаление индекса Elasticsearch
В следующем примере показано, как использовать API Elasticsearch delete index для удаления существующего индекса из кластера:
1 | curl -XDELETE "http://localhost:9200/kibana_sample_data_logs?pretty=true" -H "Content-type: application/json" |
Предыдущий запрос отправляет запрос DELETE на API удаления. Это должно удалить индекс с именем "kibana_sample_data_logs".
При успешно удалении индекса, вы получите следующий результат
1 2 3 | { "acknowledged": true } |
Пример 2: Elasticsearch удаляет несколько индексов
Мы можем удалить несколько индексов, передав их в виде списка, разделенного запятыми. Пример запроса показан на рисунке:
1 | curl -XDELETE "http://localhost:9200kibana_sample_data_flights,kibana_sample_data_logs?pretty=true" -H "Content-type: application/json" |
Предыдущая команда удаляет указанные индексы и возвращает сообщение, как показано на рисунке:
1 2 3 | { "acknowledged": true } |
Если индекс не существует, Elasticsearch возвращает ошибку, как показано на рисунке:
Пример 3: Удаление всех индексов Elasticsearch
Мы можем использовать подстановочный знак _all в API delete index, чтобы удалить все индексы из кластера. По умолчанию API для удаления индексов не позволяет передавать подстановочные знаки в запросе.
Это можно отключить, установив для параметра action.desctructive_requires_name значение false.
В следующем запросе показано, как включить использование подстановочных знаков в API удаления индексов:
1 2 3 4 5 6 | curl -XPUT "localhost:9200 /_cluster/settings" -H "Content-Type: application/json" -d' { "transient": { "action.destructive_requires_name" : false } }' |
Хотя Elasticsearch не рекомендует использовать переходные параметры кластера, избегайте установки деструктивных параметров кластера, таких как использование подстановочных знаков, в качестве постоянных параметров кластера.
Предыдущий запрос должен вернуть результат в виде:
1 2 3 4 5 6 7 8 9 | { "acknowledged": true, "persistent": {}, "transient": { "action": { "destructive_requires_name": "false" } } } |
После успеха вы можете удалить все индексы в кластере, выполнив следующую команду:
1 | curl -XDELETE "http://localhost:9200/_all?pretty=true" -H "Content-type: application/json" |
Пример 4: Elasticsearch удаляет все индексы, соответствующие определенным именам
Если вы хотите удалить все индексы, которые соответствуют определенному шаблону, вы можете использовать символ подстановки (*).
Например, чтобы удалить все индексы, начинающиеся с имени kibana, мы можем выполнить следующий запрос:
1 | curl -XDELETE "http://localhost:9200/kibana*" -H "Content-type: application/json" |
Предыдущий запрос удаляет все индексы, начинающиеся с kibana.
Предыдущий запрос требует использования подстановочных знаков. Следовательно, вы должны включить поддержку подстановочных знаков, как показано в предыдущем разделе.
Заключение
Это руководство научило вас использовать API удаления индексов Elasticsearch. Вы также узнали, как включить поддержку подстановочных знаков в вашем кластере, удалить все индексы и удалить индексы, соответствующие определенному шаблону.