首页 > 其他分享 >如何在已创建的 es 索引中增加分片

如何在已创建的 es 索引中增加分片

时间:2023-08-17 19:34:07浏览次数:39  
标签:index 创建 索引 分片 new 数据 es

在 Elasticsearch 中,分片的数量在创建索引时就已经设置好了,所以在已经创建的索引中增加分片是不可能的。这是因为 Elasticsearch 在创建索引时,会根据分片的数量把数据分布到不同的节点上,如果在创建索引后改变分片的数量,那么数据的分布就会出问题,这是 Elasticsearch 设计上的一个决定。

尽管不能直接更改已存在的索引的分片数,但我们可以通过重新索引(reindex)的方式来实现目标。也就是说,我们需要创建一个新的索引,这个新的索引有我们期望的分片数量,然后把旧的索引的数据拷贝到新的索引中。

下面是详细的步骤:

  1. 创建新索引:你可以使用 PUT 命令创建一个新的索引,设置期望的分片数量。例如:

    PUT /new_index
    {
      "settings": {
        "number_of_shards": 5,
        "number_of_replicas": 1
      }
    }
    

    这个命令会创建一个名为 new_index 的新索引,它有 5 个主分片和 1 个副本分片。

  2. 重新索引:你可以使用 POST 命令将旧索引的数据复制到新索引中。例如:

    POST /_reindex
    {
      "source": {
        "index": "old_index"
      },
      "dest": {
        "index": "new_index"
      }
    }
    

    这个命令会把 old_index 索引中的数据复制到 new_index 索引中。

  3. 验证数据:你可以使用 GET 命令来查看新索引中的数据,确保数据已经被正确复制。例如:

    GET /new_index/_search
    

    这个命令会返回 new_index 索引中的数据。

  4. 删除旧索引:如果你确定新索引中的数据是正确的,那么你可以删除旧的索引。例如:

    DELETE /old_index
    

    这个命令会删除 old_index 索引。

需要注意的是,这个过程可能需要一些时间,因为它需要复制所有的数据。而且,在数据复制的过程中,如果有新的数据被写入到旧的索引中,那么这些新的数据不会被复制到新的索引中。为了解决这个问题,你可能需要在复制数据的过程中停止写入新的数据,或者在数据复制完成后,再复制在此期间新写入的数据。

标签:index,创建,索引,分片,new,数据,es
From: https://www.cnblogs.com/sap-jerry/p/17638652.html

相关文章

  • PWA 应用 addToHomeScreen 功能概述
    PWA,全称为ProgressiveWebApp,即渐进式网页应用。它是一种将网页应用和原生应用相结合的新型应用模式,能够在用户没有安装应用的情况下,提供和原生应用相似的用户体验。在PWA中,addToHomeScreen是一个非常重要的功能。它允许用户将PWA应用添加到设备的主屏幕上,就像添加一个原生......
  • Educational Codeforces Round 109 (Rated for Div. 2)
    EducationalCodeforcesRound109(RatedforDiv.2)A-Potion-making思路:求最小操作数即药水最简比#include<bits/stdc++.h>usingnamespacestd;#defineintlonglong//#defineint__int128#definedoublelongdoubletypedefpair<int,int>PII;typedefpair......
  • [kubernetes]二进制部署k8s集群-基于containerd
    0.前言k8s从1.24版本开始不再直接支持docker,但可以自行调整相关配置,实现1.24版本后的k8s还能调用docker。其实docker自身也是调用containerd,与其k8s通过docker再调用containerd,不如k8s直接调用containerd,以减少性能损耗。除了containerd,比较流行的容器运行时还有podman,但是podm......
  • 计算机视觉(Computer Vision),计算机图形学(Computer Graphics)和数字图像(Image Proce
    计算机视觉(ComputerVision),计算机图形学(ComputerGraphics)和数字图像(ImageProcessing)从学科分类:ComputerScience/ArtificialIntelligence/ComputerVisionComputerScience/ComputerGraphicsandVisualizationElectricalEngineering/SignalProcessing/Digit......
  • [WPF]WPF中MVVM模式按下ESC键退出窗口
    首先在XAML中定义监听按键<Window.InputBindings><KeyBindingKey="Esc"Command="{BindingCloseWindowCommand}"CommandParameter="{BindingRelativeSource={RelativeSourceFindAncestor,Ancest......
  • Linux centos7.6 在线及离线安装postgresql12 详细教程
    一、在线安装官网找到对应的版本PostgreSQL: https://www.postgresql.org/     1.配置yum源sudoyuminstall-yhttps://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm 2.在线安装PostgreSQLsudoyuminsta......
  • Python分享之requests(3)
    6)身份验证基本身份认证(HTTPBasicAuth)importrequestsfromrequests.authimportHTTPBasicAuthr=requests.get('https://httpbin.org/hidden-basic-auth/user/passwd',auth=HTTPBasicAuth('user','passwd'))#r=requests.get('http......
  • VM cannot power on due to locked on ESXI hosts
    Checkiftherearesome.lckfilesexistsinVMfolderIfyes,sshtoESXihostandnavigatetothevmfolder,thenusefollowingcommandfindouttheVMlockedonwhichESXihostsforfilein$(ls-a);doecho${file};vmfsfilelockinfo-p${file}|grep-i......
  • es写入时报TransportError(413, '')
    问题现象:写入时单条或一批次的总数据大小超过es限制就会报TransportError(413,'')解决:修改es配置文件elasticsearch.yml增加max_content_length,具体大小看实际环境需求,越大性能越差http.max_content_length:1024mbFile"/opt/python3.8/site-packages/elasticsearch/hel......
  • esp32 启动流程
    [关于ROM]在esp32上电运行后,芯片运行的第一个程序。这段程序是芯片设计与生产的时候,固化在硬件电路中的。所以它是不可修改的(ReadOnlyMemory)。esp32的ROM负责检测芯片的strapping配置,来决定芯片应该处于什么状态。比如,esp32上电后,ROM程序会检查[GPIO0,GPIO2,GPIO4,......