“ elasticsearch中的文档字段如何修改分词类型或者字段类型?不同数据量级的ES平滑处理方案是怎么样的?如何具体操作?”
场景描述:
elasticsearch中已经设置好的mapping信息,是无法再次对已经存在的字段进行类型调整或增加分词操作功能,比如修改索引字段从类型long到text或增加ik分词器等。 elasticsearch底层实现是基于Lucene技术实现,在数据入库的时候已经根据设置好的mapping信息,进行索引的创建并生成对应的索引数据文件,所以文档落库之后,字段则无法修改。 那如果要修改已经存在的字段,该如何操作呢?01
—
ES数据平滑迁移方案
解决方案:
1、如果不需要保持原字段名称,可以采用新增一个符合需求的字段用户替换原来字段。这个方案不需要对原始旧索引数据进行重建。 2、如果需要保持原始文档字段必须一致,这个时候则可以采用es的索引别名aliases以及 reindex 两个命令进行操作。具体如下图所示:操作步骤:
旧索引:test_user_v1 新索引test_user_v2 索引别名:test_user_info
1、如果旧索引没有创建别名,可以使用aliases创建别名test_user_info,需调整业务方访问的索引改为别名访问。
curl --location --request POST 'http://127.0.0.1:9200/_aliases' \--data-raw '{
"actions": [ {
"add": {
"index": "test_user_v1", "alias": "test_user_info" } } ]}'返回值:{
"acknowledged": true}
2、创新的索引test_user_v2,需保证type类型的值与旧索引的type一致,否则会异常。
curl --loc