索引复制 reindex
Reindex
复制一个索引到另一个索引
重要
- 源索引必须启用
_source
。 - Reindex 不会复制源索引的设置。在运行_reindex操作之前,应该先创建目标索引,设置与源索引对等的settings、mappings。
POST _reindex
{
"source": {
"index": "twitter"
},
"dest": {
"index": "new_twitter"
}
}
version_type 参数(可选)
如果新的index中有数据,并且可能发生冲突,那么可以设置version_type来控制:
POST _reindex
{
"source": {
"index": "twitter"
},
"dest": {
"index": "new_twitter",
"version_type": "internal"
}
}
- internal: 强制更新,强制性的将文档转储到目标中,覆盖具有相同类型和ID的任何内容。
- external: 保留最新版本,只有当源索引的数据 version 比目标索引的数据 version 高的时候,才会去更新。
query 参数(可选)
通过query指定部分数据复制。
POST _reindex
{
"source": {
"index": "twitter",
"type": "_doc",
"query": {
"term": {
"user": "kimchy"
}
}
},
"dest": {
"index": "new_twitter"
}
}
多对一复制
从多个源索引复制到目标索引
POST _reindex
{
"source": {
"index": ["twitter", "blog"],
"type": ["_doc", "post"]
},
"dest": {
"index": "all_together",
"type": "_doc"
}
}
size
通过设置size来限制复制文档的数量
POST _reindex
{
"size": 1,
"source": {
"index": "twitter"
},
"dest": {
"index": "new_twitter"
}
}
使用排序
排序会降低复制的效率,但在某些情况下,这是值得的。例如复制时间较近的文档。
POST _reindex
{
"size": 10000,
"source": {
"index": "twitter",
"sort": { "date": "desc" }
},
"dest": {
"index": "new_twitter"
}
}