ES 之 Rollover

在看ILM时发现很多policy 对HOT数据都有rollover操作,不太明白这个rollover是什么神操作。终于找到一篇相关介绍,防止原博客被删,自己copy过来。

https://www.shuzhiduo.com/A/rV57W9ea5P/

索引名

 
  1. 一般而言,客户端将数据每天写入一个索引,比如直接写入YYYY-MM-HH格式的索引,那么我们只需要在写入的客户端里面获取时间,然后得到相应的格式即可,例如logstash写入ES时索引名就是logstash-YYYY-MM-HH,但是实际使用中,我们总会遇到这种格式的索引名不太适用的情况(比如每天数据量很少,但是又需要保存很久的数据,或者每天数据量极大,每天一个索引已经不能容纳了),这个时候我们就需要考虑一个机制,将索引rollover,让我们能够按照具体情况调节写的索引。

索引别名-alias

 
  1. ES提供了为索引创建别名的接口,例如:
  2. POST _aliases
  3. {
  4. "actions" : [
  5. {
  6. "add" : {
  7. "index" : "test_index",
  8. "alias" : "test_alias",
  9. "is_write_index" : true
  10. }
  11. }
  12. ]
  13. }
  14. 这里就创建了一个alias指向test_index,在使用时,用test_alias替代操作即可对test_index进行操作。

手动Rollover

 
  1. 结合alias,我们可以实现客户端写alias,在需要时将alias指向一个新的索引,就可以自由地控制数据的写入了。
  2. 步骤如下:
  3. 1. 先create一个新的索引
  4. PUT test_index2
  5. 2. 再将alias指向新的索引并移除旧的alias
  6. POST _aliases
  7. {
  8. "actions" : [
  9. {
  10. "remove" : {
  11. "index" : "test_index",
  12. "alias" : "test_alias",
  13. }
  14. },
  15. {
  16. "add" : {
  17. "index" : "test_index2",
  18. "alias" : "test_alias",
  19. "is_write_index" : true
  20. }
  21. }
  22. ]
  23. }

自动Rollover

 
  1. 在上文中,我们手动Rollover了一个索引,在运行过程中,我们需要不断的获取ES中索引的情况,然后判断是否进行Rollover。这里,我们可以用ES自带的Rollover接口替代,假设已经存在一个test_index, 和一个test_alias指向test_index。
  2. 1.先执行一次rollover验证一下
  3. POST test_alias/_rollover/test_index2
  4. {
  5. "conditions": {
  6. "max_age": "7d",
  7. "max_docs": 1
  8. }
  9. }
  10. Response:
  11. {
  12. "old_index": "test_index",
  13. "new_index": "test_index2",
  14. "rolled_over": false,
  15. "dry_run": false,
  16. "acknowledged": false,
  17. "shards_acknowledged": false,
  18. "conditions": {
  19. "[max_docs: 1]": false,
  20. "[max_age: 7d]": false
  21. }
  22. }
  23. 这个返回表明test_index没有触发我们传入的条件max_age存在7天或者max_docs文档数量达到1
  24. 2.写入一个doc
  25. PUT test_alias/test/1
  26. {
  27. "field1":"value"
  28. }
  29. 3.再次执行rollover
  30. POST test_alias/_rollover/test_index2
  31. {
  32. "conditions": {
  33. "max_age": "7d",
  34. "max_docs": 1
  35. }
  36. }
  37. Response:
  38. {
  39. "old_index": "test_indexbb",
  40. "new_index": "test_indexcc",
  41. "rolled_over": true,
  42. "dry_run": false,
  43. "acknowledged": true,
  44. "shards_acknowledged": true,
  45. "conditions": {
  46. "[max_docs: 1]": true,
  47. "[max_age: 7d]": false
  48. }
  49. }
  50. 触发了max_docs达到1的条件rollover成功,创建了新的索引并将test_alias指向了新的索引

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值