什么情况下需要更改ES索引?
在使用ES做项目开发的时候,很多时候回随着版本的迭代出现ES索引数据的变动,如果是在刚开始开发的时候,那就是删除原来的旧数据重新建索引就可以了,但是项目上线并运营了一段时间后,很显然这种方式就不可取了。
这时候我们就要用到ES提供的_reindex方法了
假设ES已经创建了名叫live的索引,并且在ES里面live已经存入了很多数据。
mapping结构体为:
{
"mappings": {
"properties": {
"room_id": {
"type": "keyword"
},
"room_name": {
"type": "text"
},
"shop_ids": {
"type": "keyword"
},
"live_date": {
"type": "keyword"
},
"goods_list": {
"type": "nested",
"properties": {
"goods_id": {
"type": "keyword"
},
"goods_name": {
"type": "text"
},
"sku_code": {
"type": "keyword"
},
"category_id": {
"type": "keyword"
},
"activity_type": {
"type": "keyword"
},
"lecture_type": {
"type": "keyword"
},
"area_ids": {
"type": "keyword"
}
}
},
"creator_id": {
"type": "keyword"
},
"push_type": {
"type": "keyword"
},
"create_at": {
"type": "keyword"
}
}
}
}
索引重建以及数据迁移 假设一个场景,需要更改live对应的mapping结构体,去掉"push_type"字典,另外新增"push_status"字典,但是不影响原来数据。
1.创建一个新的索引,索引名称为datacube_live,索引对应mapping结构体如下所示,通过调用ES接口,创建新索引。
PUT http://localhost:9200/datacub...
{
"mappings": {
"properties": {
"room_id": {
"type": "keyword"
},
"room_name": {
"type": "text"
},
"shop_ids": {
"type": "keyword"
},
"live_date": {
"type": "keyword"
},
"goods_list": {
"type": "nested",
"properties": {
"goods_id": {
"type": "keyword"
},
"goods_name": {
"type": "text"
},
"sku_code": {
"type": "keyword"
},
"category_id": {
"type": "keyword"
},
"activity_type": {
"type": "keyword"
},
"lecture_type": {
"type": "keyword"
},
"area_ids": {
"type": "keyword"
}
}
},
"creator_id": {
"type": "keyword"
},
"push_status": {
"type": "keyword"
},
"create_at": {
"type": "keyword"
}
}
}
}
2.将ES里面live对应的数据,复制到datacube_live索引里面。
POST http://localhost:9200/_reindex
{
"source": {
"index": "live"
},
"dest": {
"index": "datacube_live"
}
}
【elasticsearch修改索引】3.检验迁移是否成功
GET http://xxxx:9200/datacube_liv...
请求参数为:
{}
文章图片
datacube_live已经包含了数据,说明数据迁移成功。可以先删除live索引及数据,再将datacube_live通过重命名,再更改为live,这就完成了整个数据迁移。
推荐阅读
- ES之Lucene中的段文件
- ES如何保障数据不丢失
- ES内存使用总结
- 常用Py3操作Elasticsearch方法
- elasticsearch基础知识以及创建索引
- Elasticsearch7学习笔记之_doc类型被取消
- elasticsearch-dump数据迁移
- linux|Elasticsearch7.5.0安全(xpack)之身份认证
- ElasticSearch 5.0+Windows和Linux下各版本下载