Elasticsearch使用reindex增加分片数

    当索引建好后,需要修改分片的时候,ES是不支持直接修改的,只能建一个新的索引,然后把原索引的数据reindex到新索引里面去,以达到修改的目的。

1、reindex的用法和操作

1.1、reindex用法

POST _reindex

{

  "source": {

    "index": "metricbeat-*"(老的索引名)

  },

  "dest": {

    "index": "metricbeat"(新的索引名)

  }

}                            

1.2、reindex操作

reindex实际上是用scroll对数据进行游标查询然后插入到新索引,操作如下:

    1)数据迁移DSL

POST _reindex?slices=auto&wait_for_completion=false

{

  "source": {

    "index": "stock_preempt_fulfillsuborder",

    "size": 5000,

    "query": {

      "term": {

        "storeNo": {

          "value": "1001"

        }

      }

    }

  },

  "dest": {

    "index": "stock_preempt_fulfillsuborder_new"

  }

}

参数解释如下:

         ①slices:切片,表示查询的并行数,一般设置为auto,表示和索引的分片数相等

         ②size:一次scroll查询的数量,默认是1000,可以适当调大,根据cpu和内存使用情况调整到最优设置

         ③wait_for_completion:是否等待完成,一般如果删除数据的时间大于30秒(socket超时时间)的时候,kibana会显示超时,并且不会返回结果。这里设置为false,表示直接返回,不等待执行结果,这里会返回一个taskId,可以查看任务的执行情况和结果

         ④query:这个是可选项,表示从原索引查到的数据才会被导出,默认不加的话,是导出全部数据

 

    2)根据taskId查询执行情况

上面会执行的语句会返回taskId,可以查看任务的执行情况和结果,直到任务完成

GET _tasks/dCNYPIg4RHm3ymBqyEjMwA:59386193

2、修改分片步骤

      1)创建一个备份索引(修改后的索引结构),把原索引的数据reindex过去

      2)删除原索引

      3)创建一个和原索引名字一样的索引,但是索引结构是修改后的

      4)把备份索引的数据reindex到新索引中

这个操作的缺点是会中断服务,所以需要在没有人使用该索引的情况下使用,如果需要无感知修改,则需要使用别名,这里不做详细说明

注意:

    该操作会导致cpu、内存飙升和服务中断,请尽量避免使用高峰期操作

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Elasticsearch是一个分布式搜索和分析引擎,它通过将据分成多个分片来实现高可用性和可扩展性。下面是关于如何在Elasticsearch中进行分片的一些基本概念和操作步骤: 1. 索引创建时设置分片:在创建索引时,可以使用`number_of_shards`参设置索引的分片。例如,创建一个具有5个主分片的索引: ``` PUT /my_index { "settings": { "number_of_shards": 5 } } ``` 2. 索引分片路由:Elasticsearch使用分片路由来确定将文档存储在哪个分片中。默认情况下,它使用文档的ID哈希来选择分片。可以通过自定义分片路由来将文档存储到特定的分片中。 3. 动态增加分片:可以通过`/_shrink` API来动态减少分片量,或者通过重新索引(reindex)将据从一个索引移动到另一个具有更多分片的索引。 4. 分片副本:Elasticsearch还支持为每个主分片创建多个副本,以提供高可用性和负载均衡。可以在索引创建时设置`number_of_replicas`参来指定副本量。例如,为一个具有5个主分片和2个副本的索引: ``` PUT /my_index { "settings": { "number_of_shards": 5, "number_of_replicas": 2 } } ``` 5. 分片容量平衡:Elasticsearch会自动将索引的主分片和副本分配到不同的节点上,以实现分片的负载均衡。可以使用`/_cluster/reroute` API手动调整分片分配。 请注意,对于一个已经存在的索引,分片是不可更改的。因此,在创建索引时需要谨慎选择适当的分片。 这些是关于Elasticsearch分片的基本概念和操作步骤,希望对你有所帮助。如需更详细的信息,请参考Elasticsearch官方文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值