Kevin已经展示了reindex任务尚未完成的情况,我在reindex过程完成后回答。
请注意,_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 之后插入的文档也会出现同样的问题
一种解决方案是,第一次使用version_type= external 设置为new_dest_index 重新索引并保留source_index 的版本时,在将写入传输到new_dest_index 后,您可以再次从source_index 重新索引到@987654337 @ 在触发_reindex 后重新索引丢失的新更新。
您可以在docs here 中查看这些设置。