[elasticsearch笔记] Index Shrink/Split/rollover

本文介绍如何通过shrink和split操作优化Elasticsearch索引,包括调整primary shard数量、使用hard-links提高效率及重新hashing等过程。还提供了详细的API示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

note

  • target 的 primary 数是 source 的 primary的 factor。如 source_primary = 8, target_primary 可以为 1,2,4
  • Shrink 步骤
    • 新建 target index,index定义相同,但是primary更下
    • 从source 到 target,进行 hard-links. 如果系统不支持,则copy,会比较耗时
    • 恢复 target 访问
  • Split
    • 新建一个 target,target_primary_count > source_primary_count
    • 从source 到 target,进行 hard-links. 如果系统不支持,则copy,会比较耗时
    • re-hashing
    • recovers target

demo

PUT /my_source_index/_settings
{
  "settings": {
    "index.routing.allocation.require._name": "shrink_node_name",
    "index.blocks.write": true
  }
}

POST my_source_index/_shrink/my_target_index
{
  "settings": {
    "index.routing.allocation.require._name": null,
    "index.blocks.write": null
  }
}

POST my_source_index/_shrink/my_target_index
{
  "settings": {
    "index.number_of_replicas": 1,
    "index.number_of_shards": 1,
    "index.codec": "best_compression"
  },
  "aliases": {
    "my_search_indices": {}
  }
}

PUT my_source_index
{
  "settings": {
    "index.number_of_shards" : 1
  }
}

PUT /twitter/_settings
{
  "settings": {
    "index.blocks.write": false 
  }
}

POST twitter/_split/twitter_v2
{
  "settings": {
    "index.number_of_shards": 2
  }
}

POST twitter/_split/twitter_v2
{
  "settings": {
    "index.number_of_shards": 2
  }
}

POST twitter/_split/twitter_v2
{
  "settings": {
    "index.number_of_shards": 5 
  },
  "aliases": {
    "twitter_index": {}
  }
}

GET twitter_index/_search

PUT /logs-000001 
{
  "aliases": {
    "logs_write": {}
  }
}

POST /logs_write/_rollover 
{
  "conditions": {
    "max_age":   "7d",
    "max_docs":  1000,
    "max_size":  "5gb"
  }
}

DELETE logs-2019.07.17-1
PUT /%3Clogs-%7Bnow%2Fd%7D-1%3E 
{
  "aliases": {
    "logs_write": {
      "is_write_index":true
    }
  }
}

PUT logs_write/_doc/1
{
  "message": "a dummy log"
}

POST logs_write/_refresh

POST /logs_write/_rollover 
{
  "conditions": {
    "max_docs":   "1"
  }
}

POST /logs_write/_rollover
{
  "conditions" : {
    "max_age": "7d",
    "max_docs": 1000,
    "max_size": "5gb"
  },
  "settings": {
    "index.number_of_shards": 2
  }
}

POST /logs_write/_rollover?dry_run
{
  "conditions" : {
    "max_age": "7d",
    "max_docs": 1000,
    "max_size": "5gb"
  }
}

GET logs_write/_search
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值