【Elasticsearch实战】平滑过渡

本文详述了Elasticsearch中分片和副本的设置策略,基于3台阿里云服务器配置,深入解析数据初始化、索引命名及插入速度优化技巧,提供实际操作指导。

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

ES官网的介绍真的超级详细!

关于分片和副本

我们公司用的3台64G 32核的阿里云服务器,所以分片3个,副本2个

设置3个分片原因: 因为是3台机器,当集群比较大时则要用冷热等方式将数据隔离开

设置2个副本原因: 每个分片会产生2个副本,而产生的副本是不允许放在父级分片下的,所以产生2个副本放在其它2个分片下

关于数据初始化

使用bulk,单次插入条数2W,单次插入条数要看整个对象有多大,不过一般来说ES建议是放需要搜索的属性,而且是涉及模糊搜索的类型(然后通过二次搜索填充其它属性,比如通过主键ID去Redis查找数据并填充),所以一般可以插入2W甚至更多,如果只是简单属性查询则更推荐其它的方式进行搜索

关于索引命名

我使用的是 索引名_yyyyMMdd_v1, 索引名_yyyyMMdd_v2,最后v+数字,数字指第几次初始化

关于插入速度

只设置分片数,不设置副本数,因为如果设置副本数,在创建时还有向副本创建,会比较好性能和效率,在初始化完后再设置副本数

下面进行语句实操

1. 创建索引,注意先将副本数设置为0

PUT student_20190415_v1
{
    "settings": {
        "number_of_shards": 3,
        "number_of_replicas": 0
    },
    "mappings": {
        "student": {
            "properties": {
                "name": {
                    "type": "text"
                },
                "sex": {
                    "type": "integer",
                    "null_value": 0
                },
                "age": {
                    "type": "integer",
                    "null_value": 0
                }
            }
        }
    }
}

2. 使用bulk导入数据......

3. 使用别名指向索引,分为2种情况 3.1和 3.2

3.1 如果是之前就已经有student索引则需要先删除该索引再进行别名

3.1.1 删除索引

DELETE student

3.1.2  别名指向索引

PUT student_20190415_v1/_alias/student

3.2 如果是已进行别名指向其它索引的则进行别名重定向

POST /_aliases
{
    "actions": [
        { "remove": { "index": "student_20190414_v1", "alias": "student" }},
        { "add":    { "index": "student_20190415_v1", "alias": "student" }}
    ]
}

3.2.1 语句解释

删除student别名指向student_20190414_v1,新增student别名指向student_20190415_v1

查看别名指向哪些索引

GET /*/_alias/student

 

参考地址:

官网: https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-aliases.html

 

如果帮到你,请点个赞吧 O(∩_∩)O~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值