ElasticSearch--scroll+alias别名实现生产环境上零停机切换索引

  • scroll搜索

1 发送scroll请求
GET accounts/person/_search?scroll=1m
{
  "query": {
    "match_all": {}
  }, 
  "size": 2,
  "sort": ["_doc"]
}
会返回一个_scroll_id

2 使用_scroll_id查询第二轮结果
GET _search/scroll
{
  "scroll":"1m",
  "scroll_id":"DnF1ZXJ5VGhlbkZldGNoBQAAAAAAAA-XFnBWaThOMmhTVDV5aFFKZ3dwWWxzaWcAAAAAAAAPkxZwVmk4TjJoU1Q1eWhRSmd3cFlsc2lnAAAAAAAAD5QWcFZpOE4yaFNUNXloUUpnd3BZbHNpZwAAAAAAAA-VFnBWaThOMmhTVDV5aFFKZ3dwWWxzaWcAAAAAAAAPlhZwVmk4TjJoU1Q1eWhRSmd3cFlsc2ln"
}
返回:
{
  "_scroll_id": "DnF1ZXJ5VGhlbkZldGNoBQAAAAAAAA-8FnBWaThOMmhTVDV5aFFKZ3dwWWxzaWcAAAAAAAAPvRZwVmk4TjJoU1Q1eWhRSmd3cFlsc2lnAAAAAAAAD8AWcFZpOE4yaFNUNXloUUpnd3BZbHNpZwAAAAAAAA--FnBWaThOMmhTVDV5aFFKZ3dwWWxzaWcAAAAAAAAPvxZwVmk4TjJoU1Q1eWhRSmd3cFlsc2ln",
  "took": 1,
  "timed_out": false,
  "terminated_early": true,
  "_shards": {
    "total": 5,
    "successful": 5,
    "failed": 0
  },
  "hits": {
    "total": 3,
    "max_score": null,
    "hits": [
      {
        "_index": "accounts",
        "_type": "person",
        "_id": "3",
        "_score": null,
        "_source": {
          "name": "jim jack",
          "age": 22,
          "joinDate": "2020-03-03",
          "desc": "jim is a good boy!"
        },
        "sort": [
          0
        ]
      }
    ]
  }
}
如果还有数据,者使用返回的_scroll_id进行下一轮搜索即可

scroll搜索会在第一次搜索的时候保存一个当时的视图快照,之后只会基于该旧的快照提供搜索,如果这个期间数据变更,是不会让用户看到的(搜索不到)。此搜索性能较高。

每次发送scroll请求需要指定scoll参数,意思是时间窗口,只要在这个时间窗口内完成搜索请求就可以了,超时会报错。

scoll搜索和分页有些类似,一般会用在程序处理数据场景里,因为有超时设置,所以不适合做分页 

  • scroll+alias别名实现生产环境上零停机切换索引

1 给生产环境客户端使用别名连接es

1 PUT old_goods/_alias/goods
返回:
{
  "acknowledged": true
}

2 客户端连接测试
GET goods/book/1
返回
{
  "_index": "old_goods",
  "_type": "book",
  "_id": "1",
  "_version": 1,
  "found": true,
  "_source": {
    "name": "good book"
  }
}

2 建立新索引:使用scroll方式查询出old_goods的旧数据,然后使用bluk api的index写入到新索引中。

3 把别名从旧索引删除,然后把些别名赋给新索引

POST _aliases
{
  "actions":[
    {"remove":{"index":"old_goods","alias":"goods"}},
    {"add":{"index":"new_goods","alias":"goods"}}
    ]
}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值