Elasticsearch предоставляет API-интерфейс flush, который вызывает операции flush индекса или потока данных. Flush (Промывка) индекса или потока данных гарантирует, что данные, хранящиеся в журнале транзакций, будут перемещены в индекс Lucene.
Перемещение данных из журнала транзакций в индекс Lucene устраняет необходимость в управлении еще одной копией журнала транзакций. Это также позволяет Elasticsearch освободить дисковое пространство за счет удаления ненужных файлов генерации.
В этой заметке мы рассмотрим API Elasticsearch Flush, позволяющий нам промывать один или несколько индексов или потоков данных.
Синтаксис API
В приведенном ниже фрагменте показан синтаксис использования Elasticsearch Flush API.
1 | POST /<target>/_flush |
Параметр target может быть именем индекса, потока данных или индекса. Также можно указать несколько индексов или потоков данных в виде списка, разделенного запятыми. Следует помнить, что Elasticsearch будет промывать журнал транзакций в указанных целях.
Если необходимо промыть все индексы и потоки данных в кластере, можно пропустить значение target, как показано в синтаксисе ниже:
1 | POST /_flush |
Можно также использовать звездочку или параметр _all.
Параметры запросов
API поддерживает следующие параметры, позволяющие изменять поведение запроса и ответа.
- allow_no_inidices - разрешает возвращать ошибку, если в целевом значении переданы какие-либо подстановочные выражения или псевдонимы.
- expand_wildcards - позволяет расширить переданные символы и сопоставить их любому индексу или потоку данных.
- force - позволяет принудительно выполнить операцию flush, несмотря на отсутствие данных, доступных для фиксации в индексе Lucene.
- ignore_unavailable - игнорирует, если цель отсутствует или закрыта.
- wait_if_ongoing - блокирует операцию flush до тех пор, пока не завершатся все остальные выполняющиеся операции flush.
Пример - Elasticsearch Flush индекса
В приведенном ниже примере показано, как использовать Elasticsearch Flush API для промывки целевого индекса.
1 | curl -XPOST "http://localhost:9200/disney/_flush" -H "kbn-xsrf: reporting" |
Приведенный выше запрос промывает индекс с именем 'disney'. Результирующий вывод выглядит так:
1 2 3 4 5 6 7 | { "_shards": { "total": 2, "successful": 2, "failed": 0 } } |
Пример 2 - Промывка нескольких индексов и потоков данных в Elasticsearch
Для промывки нескольких индексов и потоков данных мы можем указать их в виде списка, разделенного запятыми, как показано на рисунке:
1 | curl -XPOST "http://localhost:9200/disney,disney_plus/_flush" -H "kbn-xsrf: reporting" |
Полученный результат:
1 2 3 4 5 6 7 | { "_shards": { "total": 4, "successful": 4, "failed": 0 } } |
Пример 3 - Elasticsearch промывает все индексы и потоки данных в кластере
Чтобы промыть все потоки данных и индексы в кластере, можно выполнить запрос:
1 | curl -XPOST "http://localhost:9200/_flush" -H "kbn-xsrf: reporting" |
Полученный результат:
1 2 3 4 5 6 7 | { "_shards": { "total": 12, "successful": 12, "failed": 0 } } |
Заключение
В этом посте вы узнали, как использовать Elasticsearch Flush API для промывки журнала транзакций из индекса или потока данных в индекс Lucene.