ElasticSearch数据库修改分片数、副本数及修改mapping字段

命运对每个人都是一样的,不一样的是各自的努力和付出不同,付出的越多,努力的越多,得到的回报也越多,在你累的时候请看一下身边比你成功却还比你更努力的人,这样,你就会更有动力。

导读:本篇文章讲解 ElasticSearch数据库修改分片数、副本数及修改mapping字段,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

1、修改副本数

        对于已经存在的索引,副本数可以随时修改。

PUT info_data2/_settings
{
  "number_of_replicas": 1
}

# 或者
PUT info_data2/_settings
{
  "index": {
    "number_of_replicas": 2
  }
}

示例演示如下:

GET info_data2/_settings

ElasticSearch数据库修改分片数、副本数及修改mapping字段

PUT info_data2/_settings
{
  "number_of_replicas": 1
}

ElasticSearch数据库修改分片数、副本数及修改mapping字段

GET info_data2/_settings

ElasticSearch数据库修改分片数、副本数及修改mapping字段

2、修改分片数

        ElasticSearch中的数据会被分别存储在不同的分片上,索引库的分片数量是在索引库创建的时候通过settings去设置的,如果不设置,分片数默认是5,分片数一旦确定就不能改变。分片数量的设置最好是机器的整倍数。

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

        为了能够改变索引分片的数量,ElasticSearch中设置了重新索引机制来实现。

如果直接执行下面的语句,会报错的:

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

2.1 重新索引

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

2.2 案例演示

2.2.1 创建一个info_data索引库

        创建一个info_data索引,此时执行分片数为3.

PUT info_data
{
  "settings": {
    "number_of_shards": 3,
    "number_of_replicas": 1
  },
  "mappings": {
    "properties": {
      "id": {
        "type": "integer"
      },
      "name": {
        "type": "text"
      }
    }
  }
}

ElasticSearch数据库修改分片数、副本数及修改mapping字段

2.2.2 向info_data库中插入数据

        向info_data索引中插入一些数据,为后续数据迁移做准备。

PUT info_data/_doc/1
{
  "id": "1",
  "name": "dgw"
}

PUT info_data/_doc/2
{
  "id": "2",
  "name": "dgw2"
}

PUT info_data/_doc/3
{
  "id": "3",
  "name": "dgw3"
}

ElasticSearch数据库修改分片数、副本数及修改mapping字段

2.2.3 查询info_data库中数据

GET info_data/_search
{
  "query": {
    "match_all": {}
  }
}

ElasticSearch数据库修改分片数、副本数及修改mapping字段

2.2.4 新建索引info_data2

        与info_data不同的地方是指定的分片数的数量,其它属性都和info_data中相同。

注意:需要先获取到info_data中的settings信息和mapping信息。建立索引info_data2时要同时带上settings和mapping信息,如果建立索引先只有settings,然后再建mapping时会报错。

GET info_data/_settings

ElasticSearch数据库修改分片数、副本数及修改mapping字段

GET info_data/_mapping

ElasticSearch数据库修改分片数、副本数及修改mapping字段

然后将settings和mapping信息组装在一起。

创建新索引info_data2:

PUT info_data2
{
  "settings": {
    "number_of_shards": 5,
    "number_of_replicas": 3
  },
  "mappings": {
    "properties": {
      "id": {
        "type": "integer"
      },
      "name": {
        "type": "text"
      }
    }
  }
}

ElasticSearch数据库修改分片数、副本数及修改mapping字段

2.2.5 查看info_data2中settings和mapping

GET info_data2

ElasticSearch数据库修改分片数、副本数及修改mapping字段

2.2.6 拷贝数据(迁移数据)

        将info_data中的数据复制到info_data2中。

POST _reindex
{
  "source": {
    "index": "info_data"
  },
  "dest": {
    "index": "info_data2"
  }
}

ElasticSearch数据库修改分片数、副本数及修改mapping字段

2.2.7 删除之前的旧索引info_data

# 删除旧索引
DELETE info_data

ElasticSearch数据库修改分片数、副本数及修改mapping字段

 2.2.8 为新索引起个别名,别名为旧索引的名称

# 为新索引起别名
PUT info_data2/_alias/info_data

ElasticSearch数据库修改分片数、副本数及修改mapping字段

注意:起别名前要确保别名不是已经存在的索引,如果存在则报错!这也是起别名之前先删除旧索引的原因!

2.2.9 查询旧索引(即为新索引的别名)

# 查询旧索引(即为新索引的别名)
GET info_data
 
# 效果等同于 GET info_data
GET info_data2

ElasticSearch数据库修改分片数、副本数及修改mapping字段

注意:新起的别名是不能DELETE的!抛出异常!

3、增加字段

        可以直接添加新的字段。

3.1 示例演示

查看当前索引的mapping信息:

GET info_data2/_mapping

ElasticSearch数据库修改分片数、副本数及修改mapping字段

添加新的字段:

PUT info_data2/_mapping
{
  "properties": {
    "age": {
      "type": "integer"
    }
  }
}

ElasticSearch数据库修改分片数、副本数及修改mapping字段

再次查看索引mapping信息:

GET info_data2/_mapping

ElasticSearch数据库修改分片数、副本数及修改mapping字段

注意:可以新增加字段,不能修改已经存在字段的属性信息。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由半码博客整理,本文链接:https://www.bmabk.com/index.php/post/142811.html

(0)

相关推荐

发表回复

登录后才能评论
半码博客——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!