记一次ElasticSearch 更改 mapping 字段类型的过程
我的个人博客:逐步前行STEP
首先,es不支持直接更改mappinng,所以,更改 mapping 实质上是重建索引。
操作步骤如下:
1、为当前这个索引old_index
设置一个别名my_index
:
curl -XPOST localhost:9200/_aliases -d '
{
"actions": [
{ "add": {
"alias": "my_index",
"index": "old_index"
}}
]
} '
2、通过别名my_inndex
访问索引old_index
;
3、重建一个新的索引new_index
,在此时使用需要的字段属性;
curl -XPUT localhost:9200/new_index
{
"mappings": {
"doc": {
"properties": {
"id": {
"type": "long"
},
"user_id": {
"type": "long"
}
}
}
},
"settings": {
"index": {
"number_of_shards": "5",
"number_of_replicas": "1"
}
}
}
4、迁移旧的索引old_index
数据到新的索引new_index
上;
curl -XPOST localhost:9200/_reindex
{
"source":{
"index":"old_index"
},
"dest":{
"index":"new_index"
}
}
5、为索引new_index
设置一个别名为my_index
,同时删除该别名对旧索引old_index
的指向:
curl -XPOST localhost:9200/_aliases -d '
{
"actions": [
{ "remove": {
"alias": "my_index",
"index": "old_index"
}},
{ "add": {
"alias": "my_index",
"index": "new_index"
}}
]
} '
6、删除索引old_index
curl -XDELETE localhost:9200/old_index