背景:前段时间在帮同事从一个集群 reindex 数据到另一个集群的时候,几次尝试都没能完整同步数据。index 中的单个文档都比较大。
看 ES 的官方文档有这样一个限制: 用于从远程集群同步的堆缓存大小是 100 mb。
Reindexing from a remote server uses an on-heap buffer that defaults to a maximum size of 100mb. If the remote index includes very large documents you’ll need to use a smaller batch size. The example below sets the batch size to 10 which is very, very small.
以及考虑到 ES 的一些 http 相关的限制
image.png
我们主要调整了 batch size, 然后同步数据就成功了。
POST _reindex?wait_for_completion=false&scroll=10m
{
"source": {
"remote": {
"host": "http://otherhost:9200",
"socket_timeout": "8m",
"connect_timeout": "300s"
},
"index": "source",
"size": 10
},
"dest": {
"index": "dest",
"version_type": "internal"
}
}
网友评论