elasticsearch - 如何在没有过时读取的情况下重新索引 Elasticsearch?
问题描述
我有大量读/写操作的索引。我的索引有一个读别名和一个写别名。当我需要更新索引中的映射时,我会执行以下过程:
使用新映射创建新索引,
将写别名添加到新索引。
删除旧索引的写别名。
像这样重新索引数据
POST _reindex?wait_for_completion=false { "conflicts": "proceed", "source": { "index": "old-index" }, "dest": { "op_type": "create", "index": "new-index" } }
重新索引读取别名指向旧索引,而写入别名指向新索引
重新索引完成后,我在新索引上创建读取别名并删除旧索引上的读取别名。
此过程运行良好,但有一个警告。虽然重新索引数据对于读取的应用程序来说是陈旧的,即在我将读取切换到新索引之前无法读取更新。
由于我有相当大的索引,重新索引需要很多小时。
有没有办法在不读取过时数据的情况下处理重新索引?
我当然想在重新索引时同时写入两个索引,但据我所知,这是不可能的。
我能想到的唯一解决方法是在客户端进行编辑,因此在重新编制索引期间,所有写入都在两个单独的请求中进入两个索引。
非常感谢任何想法或意见
解决方案
推荐阅读
- python - pmdarima 将对象分配给 auto_arima 输出
- qt - 在 qt 地图中使用 tileserver-gl 主机
- amazon-web-services - 我可以使用 S3 托管图像,并在我的 EC2 网站上使用它们吗?
- swift - Swift 中的 UiSearchBar 到 UiCollectionView
- ruby-on-rails - Rails 对空路径的约定是什么?
- javascript - 如何避免使用“回调地狱”并转向 Promises?
- mysql - MySQL 特定时间的日期时间值不正确
- reactjs - Gatsby 代理到具有相同前缀的多个后端
- python - Applescript 无法获取 Python 调用的返回
- php - 上传时,Laravel 文件名未正确保存在数据库中