ElasticSearch如何应对索引字段修改

 时间:2026-02-14 15:12:56

1、创建关于商品的ES索引

PUT item_index/_mapping/_doc

{

    "properties": {

           "itemId": { "type": "long"}

    }

}

给item_index索引添加别名

PUT item_index/_alias/item_index_alias

{}

使用别名操作索引(查询或者写入)的好处是使得操作ES索引的程序与索引名称隔离,即当索引名称发生变化的时候,不需要修改代码程序也能实现ES索引的迁移

2、使用ES的reindex功能实现索引字段类型变更

基本步骤是:通过es的reindex功能把旧索引的数据reindex到新索引,然后为新索引建立旧索引的别名,最后删除旧索引。

1.创建一个新的商品索引

PUT item_new_index/_mapping/_doc

{

    "properties": {

           "itemId": { "type": "keyword"}

    }

}

2.执行reindex操作,把旧索引的数据复制到新索引

POST _reindex        

{  

    "source": { "index": "item_index"  }, 

    "dest": {   "index": "item_new_index"  } 

}

3.将旧索引的别名切换至新的索引(即删除旧索引别名的同时给新索引添加别名)

POST _aliases/d

{  

    "actions": [  

        { "remove": {  

            "alias": "item_index_alias",  

            "index": "item_index"  

        }},  

        { "add": {  

            "alias": "item_index_alias",  

            "index": "item_new_index"  

        }}  

    ]  

4.删除旧索引

POST item_index/_forcemerge?only_expunge_deletes=true 

DELETE item_index

3、关于reIndex的注意点

1.查询reIndex进度

GET _tasks?detailed=true&actions=*reindex

2.取消reIndex任务

POST _tasks/node_id:task_id/_cancel

3.默认情况下,_reindex使用1000进行批量操作,可以在source中调整batch_size提升reIndex速度

POST _reindex


{
    "source": {
        "index": "source",
        "size": 5000
    },
    "dest": {
        "index": "dest",
        "routing": "=cat"
     }
}

4、通过给item_index索引增加新字段的方式实现索引字段类型变更

1.执行一下语句给item_index新增字段itemNo

PUT item_index/_mapping/_doc

{

    "properties": {

        "itemNo": {

            "type":   "keyword"

        }

    }

}

2.使用代码程序初始化字段itemNo,即将老的索引字段itemId值刷新到itemNo中

3.修改代码程序,使用itemNo代替itemId

4.itemId字段废弃不使用了但是会保留在item_index索引中

5、针对以上修改索引字段类型的方法修改考虑的点

1.进行以上操作的时候,建议先对索引建立快照备份。

2.如果item_index索引中文档很多,reindex操作会耗时比较久,耗费ES服务的资源,影响ES服务的的性能。

3.查询ES的磁盘空间是否足够reindex新的索引。

3.reindex过程中,原索引新增的数据,是没有被reindex过去,考虑到是否由数据丢失。

5.在reindex索引代价比较大的时候可以使用给索引新增字段的方式实现索引字段类型的变更。

  • 阴阳师妖狐皮肤夜魅之狐怎么获得
  • 原神雷电将军巴尔技能强度介绍
  • 常喝碳酸饮料的五个危害
  • 圣斗士星矢远古遗迹攻略?
  • 适筋梁弯曲破坏实验
  • 热门搜索
    宝宝鼻子不通气怎么办 陌陌怎么约炮 幸福狐狸内衣怎么样 主营业务收入怎么算 手机网速太慢怎么办 扬州大学怎么样 怎么样炖鸡汤 云是怎么形成的 我的世界怎么找钻石 信用卡丢失怎么办