博客 ElasticSearch修改分片数和副本数及增加字段

ElasticSearch修改分片数和副本数及增加字段

   数栈君   发表于 2023-09-01 10:45  232  0

、修改副本数

PUT test/_settings
{
    "index": {
        "number_of_replicas" : 1
    }
}

二、修改分片数

ElasticSearch中的数据会被分别存储在不同的分片上,索引库的分片数量是在索引库创建的时候通过settings去设置的,如果不设置,分片数默认是5,分片数一旦确定就不能改变。如果执行下面语句会报错

PUT test/_settings
{
    "index": {
        "number_of_shards" : 1
    }
}
随着数据量的增大,每个分片中的数据量也会不断增加,为了不使每个分片中的数据量过大,就需要增加分片的数量,但是分片数在索引库创建之初就已经确定,并且不能改变。

为了解决这个问题,ElasticSearch中设置了重新索引机制来实现。本文将通过一个案例进行演示如何通过重新索引修改分片数。

什么是重新索引

简单来说,重新索引就是创建一个和原索引库结构属性都基本一样的新的索引库,然后将原索引库中的数据复制到新的索引库当中。在新的索引库中,除了需要变更的地方,比如某些字段的数据类型和分片数,其他的所有属性都一样。

重新索引的具体实现

1. 创建学生索引库
下列是创建索引库students1的命令,这里创建一个关于学生信息的索引库,指定分片数为3。

DELETE students1

PUT students1
{
"settings":{
"number_of_shards":3,
"number_of_replicas":1
},
"mappings":{
"student":{
"dynamic":"strict",
"properties":{
"id":{"type": "text", "store": true},
"name":{"type": "text","store": true},
"age":{"type": "integer","store": true},
"times": {"type": "text", "index": false}
}
}
}
}

2. 插入数据

创建好索引库students1后,插入一条数据,为后面的验证做数据准备。

PUT students1/student/1
{ "id" : "1",
 "name" : "张三",
 "age" : 20 ,
 "times" : "2020-02-01"
}

3. 新建索引库students2

下列是创建索引库students2的命令,与students1不同的地方是指定分片数为5,其他的属性都和students1一样。

DELETE students2

PUT students2
{ "settings":
    { "number_of_shards":5,
    "number_of_replicas":1
    },
    "mappings":
    { "student":{ "dynamic":"strict", "properties":{ "id":{"type": "text", "store": true}, "name":{"type": "text","store": true}, "age":{"type": "integer","store": true}, "times": {"type": "text", "index": false} } }
    }
}

4. 拷贝数据

通过下面命令,将students1中的数据复制到students2中,这是重新索引的核心步骤。

POST _reindex
{
    "source": {
        "index": "students1"
    },
    "dest": {
        "index": "students2"
    }
}

小结

本文通过一个简单的案例,先创建索引库students1和索引库students2,在创建students2的语句中指定新的分片数,然后将students1中数据复制到students2中,实现重新索引,以达到修改索引库分片数的目的。如果生产中需要实现重新索引,需要按照实际

索引库的情况修改创建索引库的命令,在实现重新索引之后,要将程序中的索引库指向新的索引库。另外,本文中的操作命令是通过在kibana中的命令窗口中执行的,本文重点在介绍如何通过重新索引修


三、增加字段

PUT ods_big_epid/_mapping/ods_big_epid
{
    "properties":{
        "reportDate":{
            "type": "date",
            "format":"yyyy-MM-dd HH:mm:ss"
        }
    }
}



免责申明:


本文系转载,版权归原作者所有,如若侵权请联系我们进行删除!

《数据治理行业实践白皮书》下载地址:https://fs80.cn/4w2atu

《数栈V6.0产品白皮书》下载地址:
https://fs80.cn/cw0iw1

想了解或咨询更多有关袋鼠云大数据产品、行业解决方案、客户案例的朋友,浏览袋鼠云官网:
https://www.dtstack.com/?src=bbs

同时,欢迎对大数据开源项目有兴趣的同学加入「袋鼠云开源框架钉钉技术群」,交流最新开源技术信息,群号码:30537511,项目地址:
https://github.com/DTStack

0条评论
社区公告
  • 大数据领域最专业的产品&技术交流社区,专注于探讨与分享大数据领域有趣又火热的信息,专业又专注的数据人园地

最新活动更多
微信扫码获取数字化转型资料
钉钉扫码加入技术交流群