Кевин уже показал случай, когда задача переиндексации еще не завершена, я отвечаю на случай, когда процесс переиндексации завершен.
Обратите внимание, что _reindex API может вызвать проблемы с данными, которые являются новыми обновленными (недавно вставленными) + обновлено) на source_index
, что происходит сразу после срабатывания _reindex
, не применяется к new_dest_index
.
Например, прежде чем запустить _reindex
, вы добавляете документ:
PUT source_index/doc/3
{
"id": 3,
"searchable_name": "version1"
}
//responses
{
"_index": "source_index",
"_type": "doc",
"_id": "3",
"_version": 1,
"result": "created",
"_shards": {
"total": 2,
"successful": 2,
"failed": 0
},
"created": true
}
И затем вы запускаете _reindex API, после запуска _reindex вы обновляете документ:
PUT source_index/doc/3
{
"id": 3,
"searchable_name": "version2"
}
//responses
{
"_index": "source_index",
"_type": "doc",
"_id": "3",
"_version": 2,
"result": "updated",
"_shards": {
"total": 2,
"successful": 2,
"failed": 0
},
"created": false
}
Но после завершения _reindex
вы проверяете версию документа в new_dest_index
:
{
"_index": "new_dest_index",
"_type": "doc",
"_id": "3",
"_version": 1,
"found": true,
"_source": {
"id": 3,
"searchable_name": "version1"
}
}
Те же проблемы могут возникать для документов, вставленных после триггера _reindex
One Решение этой проблемы заключается в том, что когда вы в первый раз переиндексируете и сохраните версию source_index
с использованием настройки version_type= external
для new_dest_index
, после того, как вы сделаете c вашу запись в new_dest_index
, вы можете снова переиндексировать с source_index
в new_dest_index
для переиндексации отсутствующего нового обновления после запуска _reindex
. Вы можете проверить эти настройки в документах здесь .