При индексировании документов с использованием массовой конечной точки можно установить параметр refresh=wait_for
, чтобы дождаться обновления сегментов.
Я хочу отключить интервал обновления индекса, отправить все массовые запросы, вызвать конечную точку обновления POST /{index}/_refresh
в конце, а затем подождать, пока все обновление не будет завершено.
Можно ли это сделать с помощью API ОС?
Я просмотрел документацию, но не смог найти способа сделать это.
Вы можете отключить операцию обновления, изменив refresh_interval
на -1
. Вы можете сделать это для индексов _all
или только для одного из них.
Если вы пытаетесь ускорить скорость индексирования, вы также можете проверить следующую документацию. https://www.elastic.co/guide/en/elasticsearch/reference/current/tune-for-indexing-speed.html
#disable the refresh
PUT index/_settings
{
"refresh_interval": "-1"
}
#complete the bulk
POST /index/_bulk
#re-enable the refresh
PUT index/_settings
{
"refresh_interval": null
}
#or just refresh manually
POST index/_refresh
index.refresh_interval
Как часто выполнять операцию обновления, которая делает последние изменения в индексе видимыми для поиска. По умолчанию 1 с. Можно установить значение -1, чтобы отключить обновление. Если этот параметр не указан явно набор, шарды, которые не видели поисковый трафик как минимум index.search.idle.after секунды не будут получать фоновые обновления пока они не получат поисковый запрос. Поисковые запросы, которые затрагивают неактивный фрагмент если ожидается обновление, оно будет запущено как часть операция поиска только для этого фрагмента. Такое поведение направлено на автоматически оптимизировать массовое индексирование в случае по умолчанию, когда нет поиски производятся. Чтобы отказаться от такого поведения, явное значение 1 с должно быть установлено в качестве интервала обновления. https://www.elastic.co/guide/en/elasticsearch/reference/current/index-modules.html#index-refresh-interval-setting
Когда вы вызываете конечную точку _refresh
, OpenSearch ожидает завершения операции обновления, прежде чем вернуться. Однако перед началом обновления следует убедиться, что все массовые запросы обработаны. Вот пример ответа на вызов _refresh
API. { "_shards": { "total": 4, "successful": 2, "failed": 0 } }
. Как вы можете видеть в теле ответа, все основные сегменты были успешно обновлены.
Не знал, что _refresh синхронен, спасибо.
Пожалуйста, @cairo
после звонка
POST index/_refresh
, как сделать так, чтобы все балки разошлись по шардам?