如何解决如何在没有陈旧读取的情况下重新索引Elasticsearch?
我的索引具有大量读/写操作。 我的索引具有读取和写入别名。 当我需要更新索引中的映射时,请执行以下过程:
-
使用新映射创建新索引,
-
向新索引添加写别名。
-
将写别名删除到旧索引。
-
像这样重新索引数据
POST _reindex?wait_for_completion=false { "conflicts": "proceed","source": { "index": "old-index" },"dest": { "op_type": "create","index": "new-index" } }
-
在重新索引读取别名时指向旧索引,而在写入别名时指向新索引
-
重新索引完成后,我在新索引上创建一个读别名,并删除旧索引上的读别名。
此过程运行良好,但有一个警告。重新索引数据时,应用程序读取的数据已过时,也就是说,直到我将读取切换到新索引之后,才能读取更新。
由于索引很大,因此重新索引需要很多小时。
有什么方法可以在不读取陈旧数据的情况下处理重新索引编制?
我当然想在重新索引时同时写入两个索引,但是据我所知这是不可能的。
我能想到的唯一解决方法是在客户端进行编辑,因此在重新索引期间,所有写操作都会在两个单独的请求中同时到达两个索引。
任何想法或评论都值得赞赏?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。