“知了”开发日志——构建ES索引操作接口

1. 接口设计

本次设计的目的是实现对于es索引的管理操作,面向超级管理员用户开放使用;

具体接口包含有三个:

  1. 索引的备份:将资源索引按照指定名称备份
  2. 索引的重建:将资源索引根据数据库重建
  3. 索引的删除:将某一索引删除

同时需要考虑鉴权操作,利用随机串appKey和session进行判断用户身份。

2. 技术路线

对于索引的重建、删除,均可以使用spring-data-elasticsearch中的template类实现;

但是在索引的备份上遇到了困难…

1. spring-data-elasticsearch

首先查询spring-data-elasticsearch相应版本(3.0.6)的官方文档与接口文档均没有找到与备份相关的文档,

https://docs.spring.io/spring-data/elasticsearch/docs/3.0.6.RELEASE/reference/html/

https://docs.spring.io/spring-data/elasticsearch/docs/3.0.6.RELEASE/api/

这很奇怪,因为索引的备份转存确实是一个常用的操作,但是我在此纠结了许久,实在是没有找到…

2. high level client

而后,找到了elasticsearch官方提供的api:POST _reindex

https://www.elastic.co/guide/en/elasticsearch/reference/5.6/docs-reindex.html

这一api在最新的7版本中改为:clone

img

因此希望尝试使用官方的 java high level client 进行实现 _reindex 操作,但是导入的包与 spring-data-elasticsearch 3.0.6 的包有冲突,导致无法正常使用。

3. okhttp3

最终使用okhttp3,直接使用http进行请求。

3. 接口实现

通过 managementController 调用 esService 实现,appKey暂时写死在代码段,鉴权结合session获取用户身份。

  • 备份索引:将资源索引备份为 zhi_bak_01的索引

    1
    2
    3
    4
    5
    type:POST

    url:./manage/esClone

    data:name=zhi_bak_01,appKey=oA7Is5L0CihjIB5w
  • 删除索引:删除名为 zhi_bak_01的索引

    1
    2
    3
    4
    5
    type:POST

    url:./manage/esDelete

    data:name=zhi_bak_01,appKey=oA7Is5L0CihjIB5w
  • 重建索引:首先将自动备份资源索引(名称为 [原索引名]bak[当前时间] ),而后根据数据库resource表重建资源索引

    1
    2
    3
    4
    5
    type:POST

    url:./manage/esRebuild

    data:appKey=oA7Is5L0CihjIB5w
------ 本文结束,感谢观看! ------
 wechat
扫一扫,访问本站