首页 > 其他分享 >ES shrink ——一般是结合rollover一起使用的,一开始没有看懂官方shrink文档,当看了这个之后就明白了

ES shrink ——一般是结合rollover一起使用的,一开始没有看懂官方shrink文档,当看了这个之后就明白了

时间:2023-06-01 12:32:15浏览次数:40  
标签:25 2016.11 logstash 当看 索引 分片 rollover shrink

rollover

Elasticsearch 从 5.0 开始,为日志场景的用户提供了一个很不错的接口,叫 rollover。其作用是:当某个别名指向的实际索引过大的时候,自动将别名指向下一个实际索引。

因为这个接口是操作的别名,所以我们依然需要首先自己创建一个开始滚动的起始索引:


1. # curl -XPUT 'http://localhost:9200/logstash-2016.11.25-1' -d '{
2. "aliases":{
3. "logstash":{}
4. }
5. }'

然后就可以尝试发起 rollover 请求了:


1. # curl -XPOST 'http://localhost:9200/logstash/_rollover' -d '{
2. "conditions":{
3. "max_age":"1d",
4. "max_docs":10000000
5. }
6. }'

上面的定义意思就是:当索引超过 1 天,或者索引内的数据量超过一千万条的时候,自动创建并指向下一个索引。

这时候有几种可能性:

  • 条件都没满足,直接返回一个 false,索引和别名都不发生实际变化;


1. {
2. "old_index":"logstash-2016.11.25-1",
3. "new_index":"logstash-2016.11.25-1",
4. "rolled_over":false,
5. "dry_run":false,
6. "acknowledged":false,
7. "shards_acknowledged":false,
8. "conditions":{
9. "[max_docs: 10000000]":false,
10. "[max_age: 1d]":false
11. }
12. }
  • 还没满一天,满了一千万条,那么下一个索引名会是:logstash-2016.11.25-000002
  • 还没满一千万条,满了一天,那么下一个索引名会是:logstash-2016.11.26-000002

shrink

Elasticsearch 一直以来都是固定分片数的。这个策略极大的简化了分布式系统的复杂度,但是在一些场景,比如存储 metric 的 TSDB、小数据量的日志存储,人们会期望在多分片快速写入数据以后,把老数据合并存储,节约过多的 cluster state 容量。从 5.0 版本开始,Elasticsearch 新提供了 shrink 接口,可以成倍数的合并分片数。

注:所谓成倍数的,就是原来有 15 个分片,可以合并缩减成 5 个或者 3 个或者 1 个分片。

整个合并缩减的操作流程,大概如下:

  1. 先把所有主分片都转移到一台主机上;
  2. 在这台主机上创建一个新索引,分片数较小,其他设置和原索引一致;
  3. 把原索引的所有分片,复制(或硬链接)到新索引的目录下;
  4. 对新索引进行打开操作恢复分片数据。
  5. (可选)重新把新索引的分片均衡到其他节点上。

准备工作

  • 因为这个操作流程需要把所有分片都转移到一台主机上,所以作为 shrink 主机,它的磁盘要足够大,至少要能放得下一整个索引。
  • 最好是一整块磁盘,因为硬链接是不能跨磁盘的。靠复制太慢了。
  • 开始迁移:


1. # curl -XPUT 'http://localhost:9200/metric-2016.11.25/_settings' -d '
2. {
3. "settings":{
4. "index.routing.allocation.require._name":"shrink_node_name",
5. "index.blocks.write":true
6. }
7. }'

shrink 操作


1. curl -XPOST 'http://localhost:9200/metric-2016.11.25/_shrink/oldmetric-2016.11.25'-d'
2. {
3.  "settings": {
4.  "index.number_of_replicas": 1,
5.  "index.number_of_shards": 3
6.  },
7.  "aliases": {
8.  "metric-tsdb": {}
9.  }
10. }'

这个命令执行完会立刻返回,但是 Elasticsearch 会一直等到 shrink 操作完成的时候,才会真的开始做 replica 分片的分配和重均衡,此前分片都处于 initializing 状态。

注意:Elasticsearch 有一个硬编码限制,单个分片内的文档总数不得超过 2147483519 个。一般来说这个限制在日志场景下是不太会触发的,但是如果做 TSDB 用,则需要多加注意!

标签:25,2016.11,logstash,当看,索引,分片,rollover,shrink
From: https://blog.51cto.com/u_11908275/6393250

相关文章

  • .sh报错 unable to execute /usr/local/bin/pishrink.sh: No such file or directory
    具体操作步骤如下:1、执行命令vistart.sh2、执行:setff(这里是查看.sh文件的格式,如果在左下角你看到fileformat=doc或fileformat=mac,继续执行下边的步骤)3、执行命......
  • 关于flex:1详解(用来设置 flex-grow, flex-shrink 与 flex-basis。)
    关于flex:1详解;https://blog.csdn.net/qq_40138556/article/details/103967529flex属性是flex-grow, flex-shrink 和 flex-basis的简写,默认值为01auto。后两个属性可......
  • CF1060F Shrinking Tree
    题面传送门考虑枚举最后剩下的点,然后令它为根。对于每个不是根的点,我们记\(ti_i\)表示\(i\)是什么时候和它的父亲合并的,\(op_i\)表示\(i\)在和父亲合并的时候是不......
  • 从 Rollover+curator 到 ILM
    数据量增长,当前存在的问题:查询与写入越来越慢,聚合的速度慢的离谱,聚合的数据量大一些的话,可能出现超时失败,甚至OOM磁盘和内存资源以肉眼可见的速度快速消耗,甚至出现满载......
  • Shrinking SQL Server Transaction Logs with SQL-DMO
    ShrinkingSQLServerTransactionLogswithSQL-DMO Downloaddemoexecutable-54.0KbDownloadprojectsource(WTL)-73.4KbDownloadoldproje......
  • shrink space释放空间
     1.查询数据库表大小SQL>selectbytes/1024/1024/1024as"GB"fromdba_segmentswheresegment_name='TB_TEST_OBJ';GB----------2.40203857 2.删除数据......
  • 哪些因素会影响sqlserver shrink的速度
    以下因素会严重影响sqlserver文件收缩的时间。1.LOB数据所谓LOB数据,指的是任何大值数据类型(如text、image、varchar(max)、XML)。这里的问题在于存储LOB值的方式,他们通......
  • 用收缩损失(Shrinkage Loss)进行深度回归跟踪
    Winteriscoming!看过冰与火的你应该很熟悉这句,有兴趣的可以去好好观赏一番。但是今天我和大家说的是目标跟踪的内容,如果在这部美剧使用了目标跟踪的技术,又是另一个结局。言......
  • Shrinking Database Segments Online
    YouuseonlinesegmentshrinktoreclaimfragmentedfreespacebelowthehighwatermarkinanOracleDatabasesegment.Thebenefitsofsegmentshrinkarethe......
  • flex项目的属性rder、flex-grow、flex-shrink、flex-basis、flex、align-self
    1、order属性定义项目的排列顺序.item{order:<integer>;}2、flex-grow属性定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大.item{flex-grow:<number>;;......