记一次ES修改数据结构的操作

本文记录了一次在Elasticsearch(ES)中因需修改字段类型和平滑迁移数据的过程。由于ES不支持直接修改已有字段类型,采取创建新索引、定义新数据结构、迁移数据、设置别名、删除旧索引的步骤,确保线上服务不受影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景: ES上的原数据接口某字段需要修改类型和配置分词器,但ES不支持修改已存在字段的类型,所以只能重新创建数据结构,且已存在数据不能丢失。

方法:创建新的索引,并创建新的数据结构,将老索引的数据全部迁移到新索引上,然后将给新索引创建别名,别名为老索引,删除老索引,这样线上请求老索引时会映射请求到新索引,使用者感觉不到变化。

1.创建新索引

put 127.0.0.1:9200/newIndex
{
    "mappings": {
        "newIndex": {
            "properties": {
                "businessId": {
                    "type": "long"
                },
                "content": {
                    "type": "text",
                    "fields": {
                        "keyword": {
                            "type": "keyword",
                            "ignore_above": 256
                        }
                    },
                    "analyzer":"ik_max_word"
                }
            }
        }
    }
}

2.迁移数据到新索引

post 127.0.0.1:9200/_reindex

{

        "source": {

                "index": "oldIndex"

        },

        "dest": {

                "index": "newIndex"

        }

}

3.创建别名

post 127.0.0.1:9200/_aliases

{

        "actions": [

                {

                        "add" : {

                                "index": "newIndex", 

                                "alias": "oldIndex"

                        }

                }

        ]

4.删除原索引

delete 127.0.0.1:9200/oldIndex 

这样就完成了数据结构的修改,虽然ES里的实际索引名换了,但是请求代码不用更改。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值