推荐链接:
总结——》【Java】
总结——》【Mysql】
总结——》【Redis】
总结——》【Kafka】
总结——》【Spring】
总结——》【SpringBoot】
总结——》【MyBatis、MyBatis-Plus】
总结——》【Linux】
总结——》【MongoDB】
总结——》【Elasticsearch】
一、概念
Elasticsearch的_reindex API可以将一个或多个索引中的所有文档复制到新的索引或已存在的索引中。
_reindex API支持很多功能:
- 指定过滤条件
- 调整分片数
- 重新命名字段
- 设置新索引别名
二、步骤
- 在请求体中指定源索引名称或查询语句(source)
- 在请求体中指定目标索引(destination)
- 执行请求
三、示例
将索引名为“my_source_index”的所有文档复制到名为“my_destination_index”的新索引中。
1、源索引
delete my_source_index
PUT /my_source_index/_doc/1
{
"name" : "小米手机",
"desc" : "手机中的战斗机",
"price" : 3999,
"lv":"旗舰机",
"type":"手机",
"createtime":"2020-10-01T08:00:00Z",
"tags": [ "性价比", "发烧", "不卡顿" ]
}
PUT /my_source_index/_doc/2
{
"name" : "小米NFC手机",
"desc" : "支持全功能NFC,手机中的滑翔机",
"price" : 4999,
"lv":"旗舰机",
"type":"手机",
"createtime":"2020-05-21T08:00:00Z",
"tags": [ "性价比", "发烧", "公交卡" ]
}
GET my_source_index/_search
2、文档复制
POST _reindex
{
"source": {
"index": "my_source_index"
},
"dest": {
"index": "my_destination_index"
}
}
3、新索引
GET my_destination_index/_search
四、注意
_reindex操作可能会带来一些额外的性能消耗。为了确保最小化这些消耗并避免对生产环境造成影响,建议在非生产环境中先进行测试并仔细考虑实施策略。