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

这篇具有很好参考价值的文章主要介绍了ElasticSearch数据库修改分片数、副本数及修改mapping字段。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、修改副本数

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

PUT info_data2/_settings
{
  "number_of_replicas": 1
}

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

示例演示如下:

GET info_data2/_settings

elasticsearch修改分片数量,ElasticSearch,elasticsearch,mapping,分片副本

PUT info_data2/_settings
{
  "number_of_replicas": 1
}

elasticsearch修改分片数量,ElasticSearch,elasticsearch,mapping,分片副本

GET info_data2/_settings

elasticsearch修改分片数量,ElasticSearch,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修改分片数量,ElasticSearch,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修改分片数量,ElasticSearch,elasticsearch,mapping,分片副本

2.2.3 查询info_data库中数据

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

elasticsearch修改分片数量,ElasticSearch,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修改分片数量,ElasticSearch,elasticsearch,mapping,分片副本

GET info_data/_mapping

elasticsearch修改分片数量,ElasticSearch,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修改分片数量,ElasticSearch,elasticsearch,mapping,分片副本

2.2.5 查看info_data2中settings和mapping

GET info_data2

elasticsearch修改分片数量,ElasticSearch,elasticsearch,mapping,分片副本

2.2.6 拷贝数据(迁移数据)

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

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

elasticsearch修改分片数量,ElasticSearch,elasticsearch,mapping,分片副本

2.2.7 删除之前的旧索引info_data

# 删除旧索引
DELETE info_data

elasticsearch修改分片数量,ElasticSearch,elasticsearch,mapping,分片副本

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

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

elasticsearch修改分片数量,ElasticSearch,elasticsearch,mapping,分片副本

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

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

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

elasticsearch修改分片数量,ElasticSearch,elasticsearch,mapping,分片副本

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

3、增加字段

        可以直接添加新的字段。

3.1 示例演示

查看当前索引的mapping信息:

GET info_data2/_mapping

elasticsearch修改分片数量,ElasticSearch,elasticsearch,mapping,分片副本

添加新的字段:

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

elasticsearch修改分片数量,ElasticSearch,elasticsearch,mapping,分片副本

再次查看索引mapping信息:

GET info_data2/_mapping

elasticsearch修改分片数量,ElasticSearch,elasticsearch,mapping,分片副本

注意:可以新增加字段,不能修改已经存在字段的属性信息。文章来源地址https://www.toymoban.com/news/detail-783120.html

到了这里,关于ElasticSearch数据库修改分片数、副本数及修改mapping字段的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Elasticsearch的分片和副本

    Elasticsearch是一个分布式搜索和分析引擎,其设计目标是在分布式环境下处理海量数据。为了实现这个目标,Elasticsearch将数据分割成多个分片,并在多台服务器上进行存储和处理。每个分片都是一个独立的Lucene索引,可以被分配到不同的节点上。 分片可以帮助Elasticsearch水平扩

    2024年02月17日
    浏览(41)
  • ElasticSearch--分片和副本--原理

    原文网址:ElasticSearch--分片和副本--原理_IT利刃出鞘的博客-CSDN博客 说明 本文介绍ES的分片和副本的原理。 粉丝福利 :有很多粉丝私信问我有没有Java的面试及PDF书籍等资料,我整理一下,包含: 真实 面试题汇总、简历模板、PDF书籍、PPT模板等。这些是 我自己也在用 的资料

    2023年04月09日
    浏览(34)
  • elasticsearch的副本和分片的区别

    es/elasticsearch的副本和分片的区别 一:概念 (1)集群(Cluster): ES可以作为一个独立的单个搜索服务器。不过,为了处理大型数据集,实现容错和高可用性,ES可以运行在许多互相合作的服务器上。这些服务器的集合称为集群。 (2)节点(Node): 形成集群的每个服务器称

    2024年02月11日
    浏览(32)
  • ElasticSearch的集群、节点、索引、分片和副本

    Elasticsearch是面向文档型数据库,一条数据在这里就是一个文档。为了方便大家理解,我们将Elasticsearch里存储文档数据和关系型数据库MySQL存储数据的概念进行一个类比 ES里的Index可以看做一个库,而Types相当于表,Documents则相当于表的行。 这里Types的概念已经被逐渐弱化,E

    2024年02月02日
    浏览(90)
  • Elasticsearch 的节点、集群、分片和副本 全面解析

    节点是 Elasticsearch 实例的运行实例,即一个独立的 Elasticsearch 服务进程。每个节点都是一个独立的工作单元,负责存储数据、参与数据处理(如索引、搜索、聚合等)以及参与集群的协调工作。节点可以在物理或虚拟机上单独部署,也可以在同一台机器上运行多个节点(但需

    2024年04月27日
    浏览(29)
  • Elasticsearch索引优化指南:分片、副本、mapping和analyzer

    Elasticsearch是一个开源的分布式搜索引擎,它的数据存储和查询速度非常快。然而,在面对大规模的数据集和高并发访问时,Elasticsearch的性能也可能受到一些影响。为了最大程度地提高Elasticsearch的性能,我们需要对索引进行优化。本篇博客将介绍Elasticsearch索引优化的几个关键

    2024年02月20日
    浏览(38)
  • 04_手工画图剖析Elasticsearch核心概念:NRT、索引、分片、副本等

    2.elasticsearch的核心概念 (1)Near Realtime (NRT):近实时, 从写入数据到数据可以被搜索到有一个小延迟(大概1秒);基于es执行搜索和分析可以达到秒级 (2) cluster集群:包括多个节点, 每个节点属于哪个集群是通过一个配置(集群名称,默认是elasticsearch)来决定的, 对于中小型

    2024年02月09日
    浏览(42)
  • 数据库分片及其挑战

    ​数据库分片可以通过优化数据分布来提高可扩展性和性能,从而提高效率。数据库分片是一种有效管理大型数据库的强大技术。它将一个大型数据库分割成更小、更易管理的部分,称为分片。\\\"分片\\\"一词恰如其分地描述了将大型数据库分解为更小、更易管理的片段的方法。

    2024年02月12日
    浏览(37)
  • 一文详解什么是数据库分片

        应用程序正在变得越来越好,它拥有更多的功能、更多的活跃用户,并且每天都会收集更多的数据。但数据库现在导致应用程序的其余部分变慢。数据库分片可能是问题的答案,但许多人不知道它是什么,最重要的是何时使用它。在本文中我们将讨论什么是数据库分片、

    2024年02月16日
    浏览(35)
  • 数据泵(impdb)导入Oracle分片的数据库dump文件

    data_dir为路径名称,可自命名。路径是导出的dmp文件存放的路径必须存在。 查询用户创建目录 上面命令只是指定了导出文件存放的路径,但是这个路径需要自己手动创建和赋权 注意:在导入数据的时候需要检查源数据的表空间大小,默认表空间最大只有32G,超过容量会导致

    2024年02月08日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包