如何在没有过时读取的情况下重新索引elasticsearch?

ht4b089n  于 2021-06-14  发布在  ElasticSearch
关注(0)|答案(0)|浏览(147)

我有大量的读/写操作索引。我的索引有一个读别名和一个写别名。当我需要更新索引中的Map时,我会执行以下过程:
使用新Map创建新索引,
将写别名添加到新索引。
删除旧索引的写入别名。
像这样重新索引数据

POST _reindex?wait_for_completion=false
{
"conflicts": "proceed",

"source": {
"index": "old-index"
},
 "dest": {
   "op_type": "create", 
   "index": "new-index"
 }
}

重新索引时,读别名指向旧索引,而写别名指向新索引
重新索引完成后,我在新索引上创建一个读取别名,并删除旧索引上的读取别名。
这个过程很好,但有一个警告。重新索引数据对于应用程序读取来说是过时的,也就是说,在我将读取切换到新索引之前,无法读取更新。
因为我有相当大的索引,重新索引需要很多小时。
有没有办法在不读取过时数据的情况下处理重新索引?
我当然想在重新索引时同时写入两个索引,但据我所知这是不可能的。
我能想到的唯一解决方法是在客户端进行编辑,因此在重新索引期间,所有写入都会在两个单独的请求中同时发送到两个索引。
有什么想法或意见是非常感谢?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题