1、普通索引复制
POST _reindex
{
"source": {
"index":"old_index"
},
"dest": {
"index": "new_index"
}
}
2、批量复制优化
POST _reindex
{
"source": {
"index": "source",
"size": 5000
},
"dest": {
"index": "dest"
}
}
3、提高scroll的并行度优化
POST _reindex?slices=5&refresh
{
"source": {
"index": "twitter"
},
"dest": {
"index": "new_twitter"
}
}
4、条件查询以及部分字段同步
{
"source": {
"index": "maindata",
"_source": [
"dataId",
"website",
"source",
"author",
"dataExist",
"id",
"teamId",
"tonalState",
"createTime",
"judgeMark"
],
"query": {
"match_phrase": {
"teamId": 3
}
}
},
"dest": {
"index": "maindatagroup",
"version_type": "internal"
}
}
slices大小设置注意事项:
1)slices大小的设置可以手动指定,或者设置slices设置为auto,auto的含义是:针对单索引,slices大小=分片数;针对多索引,slices=分片的最小值。
2)当slices的数量等于索引中的分片数量时,查询性能最高效。slices大小大于分片数,非但不会提升效率,反而会增加开销。
3)如果这个slices数字很大(例如500),建议选择一个较低的数字,因为过大的slices 会影响性能。
效果
实践证明,比默认设置reindex速度能提升10倍+。
5、覆盖更新
说明:
"version_type": "internal",internal表示内部的,省略version_type或version_type设置为 internal 将导致 Elasticsearch 盲目地将文档转储到目标中,覆盖任何具有相同类型和 ID 的文件。
这也是最常见的重建方式。
POST _reindex
{
"source": {
"index": "twitter"
},
"dest": {
"index": "new_twitter",
"version_type": "internal"
}
}
6、根据条件索引复制
POST _reindex
{
"source": {
"index": "old_index",
"query": {
"range": {
"createTime": {
"lte": "2022-07-14T10:06:13+08:00"
}
}
},
"excludes": [ "column1","column2" ] //排除字段
},
"dest": {
"index": "new_index",
"version_type": "internal"
}
}
7、从远程中重建索引
POST _reindex
{
"source": {
"remote": {
"host": "http://otherhost:9200",
"username": "user",
"password": "pass",
"socket_timeout": "1m",
"connect_timeout": "10s"
},
"index": "source",
"query": {
"match": {
"test": "data"
}
}
},
"dest": {
"index": "dest"
}
}
8、超时问题
es中的请求超时时间默认是1分钟,当重建索引的数据量太大时,经常会出现超时。这种情况可以增大超时时间,也可以添加wait_for_completion=false参数将请求转为异步任务。
POST _reindex?slices=9&refresh&wait_for_completion=false
{
"source": {
"index": "twitter"
},
"dest": {
"index": "new_twitter"
}
}
1)获取reindex任务列表
GET _tasks?detailed=true&actions=*reindex
2)根据任务id查看任务
GET _tasks/r1A2WoRbTwKZ516z6NEs5A:36619
3)取消任务
POST _tasks/r1A2WoRbTwKZ516z6NEs5A:36619/_cancel