栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 云计算 > 云平台

Elasticsearch 线上无感知切换索引

云平台 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Elasticsearch 线上无感知切换索引

方式一:1. 创建新索引
PUT test.project.20220507
{
    "mappings":{
        "properties":{
            "code":{
                "type":"text",
                "fields":{
                    "keyword":{
                        "type":"keyword",
                        "ignore_above":256
                    }
                },
                "analyzer":"sdm_tokenizer"
            },
            "type":{
                "properties":{
                    "id":{
                        "type":"text"
                    },
                    "name":{
                        "type":"text",
                        "fields":{
                            "keyword":{
                                "type":"keyword",
                                "ignore_above":256
                            }
                        }
                    },
                    "display_name":{
                        "type":"text",
                        "fields":{
                            "keyword":{
                                "type":"keyword",
                                "ignore_above":256
                            }
                        }
                    },
                    "child_name":{
                        "type":"text",
                        "fields":{
                            "keyword":{
                                "type":"keyword",
                                "ignore_above":256
                            }
                        }
                    }
                }
            }
        }
    }
}
2.复制数据 
POST _reindex
{
    "source":{
        "index":"source.project"
    },
    "dest":{
        "index":"test.project.20220507",
        "op_type":"create"
    }
}

 其中source为原来索引数据,dest为新索引

3.切换索引
POST /_aliases
{
    "actions":[
        {
            "add":{
                "index":"test.project.20220507",
                "alias":"source.project"
            }
        },
        {
            "remove_index":{
                "index":"source.project"
            }
        }
    ]
}

 其中index为新索引,alias  定义别名,这里的别名为旧索引的名字,remove_index:删除之前那个旧索引,保证新索引的别名顺利创建。

利用别名切换索引,可以保证不重启线上服务的情况,切换到新索引,1,2步骤非必须,除非新旧索引是因为mapping里面定义的字段类型不一样,才需要执行;单独执行步骤2的话,只是复制数据,但不复制mapping

方式二:备份旧索引的mapping,在利用别名切换索引

 1.先决条件,要改成只读

PUT /source.project/_settings
{
  "settings": {
    "index.blocks.write": true
  }
}

2.复制索引跟mapping

POST /source.project/_clone/test.project.20220507

3. 恢复原先索引

PUT /source.project/_settings
{
  "settings": {
    "index.blocks.write": false
  }
}

4. 利用方式一的第三步骤,切换索引

方式二个人理解适用于索引数据有问题,mapping无需更新的情况下,可直接复制mapping,然后修改同步工具 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/897285.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号