Elasticsearch позволяет обновлять один или несколько индексов в кластере с помощью API refresh. Обновление позволяет обновить индекс и перезагрузить все последние операции, выполненные в индексе. Например, если сессия удаляет и добавляет данные в определенный индекс, вы можете использовать API refresh для перезагрузки этих изменений в свои сессии.
В этой статье мы рассмотрим API обновления Elasticsearch и узнаем, как можно выполнять операции обновления в кластере.
Синтаксис запроса
Ниже показан синтаксис запроса с использованием API refresh.
1 | POST <цель>/_refresh |
1 | GET <цель>/_refresh |
API refresh поддерживает оба HTTP-метода GET и POST.
Следует помнить, что Elasticsearch будет выполнять операцию обновления в фоновом режиме с интервалом в 30 секунд.
Пример - Обновление определенного индекса
В следующем примере показано, как использовать API refresh для перезагрузки изменений в индексе kibana_sample_data_logs.
1 | curl -XPOST "http://localhost:9200/kibana_sample_data_logs/_refresh" -H "kbn-xsrf: reporting" |
Приведенный выше запрос должен вернуть сообщение, как показано ниже:
1 2 3 4 5 6 7 | { "_shards": { "total": 2, "successful": 2, "failed": 0 } } |
Пример 2 - Обновление всех индексов в кластере
Мы также можем выполнить обновление всех потоков данных и индексов в данном кластере, вызвав API _refresh без параметров.
Синтаксис запроса выглядит следующим образом:
1 | POST /_refresh |
1 | GET /_refresh |
Например,
1 | curl -XPOST "http://localhost:9200/_refresh/" -H "kbn-xsrf: reporting" |
API должен возвращать количество обновленных индексов и потоков данных в виде:
1 2 3 4 5 6 7 | { "_shards": { "total": 14, "successful": 14, "failed": 0 } } |
Операции обновления считаются ресурсоемкими, особенно для индексов с большим объемом данных. Поэтому в Elasticsearch рекомендуется использовать периодическое обновление по умолчанию. Однако если необходимо обеспечить самое последнее обновление, можно использовать параметр refresh=wait_for, позволяющий поисковому запросу подождать до периодического обновления.
Заключение
В этой статье вы узнали, как использовать API refresh в elasticsearch для получения последних операций над заданным индексом или потоком данных.