大体的原理:
1:按照老索引按需修改,新建新索引
2:转移数据(数据量大,时间会很长)
3:删除老索引
4:给新索引 创建别名
第一步:创建新索引
可以先获取老索引mapping
java
GET /old_index/_mapping
-------按需修改mapping结构或类型----
java
PUT /new_index
{
"mappings": {
"properties": {
"new_field": {
"type": "text"
}
}
}
}
第二步:转移数据(数据量大,时间会很长)
使用_reindex API将旧索引的数据复制到新索引中
java
POST /_reindex
{
"source": {
"index": "old_index"
},
"dest": {
"index": "new_index"
}
}
异步任务迁移数据
java
POST /_reindex?wait_for_completion=false
{
"source": {
"index": "old-index"
},
"dest": {
"index": "new-index"
}
}
响应:
{
"task": "jxZZibZPQ_mViMJHQyFz5w:7665"
}
查看任务状态:
GET /_tasks/jxZZibZPQ_mViMJHQyFz5w:7665
验证数据是否全部转移:查看新旧索引中的数据总量是否相等
GET /old-index/_count
GET /new-index/_count
第三步 删除旧索引(可选步骤,谨慎操作)
DELETE /old_index
这里可能提示错误,
does not support having a body
可以借助插件工具 直接点击删除
第四步:给新索引 创建别名
java
PUT /new_index/_alias/old_index