写点什么

ES 数据没了?谁动了我的数据?

作者:极限实验室
  • 2023-05-12
    湖南
  • 本文字数:1252 字

    阅读完需:约 4 分钟

背景

我们在使用 Elasticsearch 的时候,可能会遇到数据“丢”了的情况。有可能是数据没成功写入 ES 集群,也可能是数据被误删了。


针对数据被误删,有没有好的解决办法呢?


其实我们可以把“删除数据”这个操作管理起来。当 ES 集群接收到删除数据命令的时候,先不执行该命令,而是生成一条删除数据的记录,经过管理人员批准后,该命令才会执行。这样不仅可以管理数据的删除,还可以进行删除操作的追踪:什么人,什么时间,发送了什么样的删除指令,从哪个 IP 发送的,以什么身份登录的等等。


要实现这个解决办法,我们可借助 INFINI Gateway 和 Console 的帮助。

方案架构

方案效果

  • INFINI Gateway 作为 ES 集群的代理,接收所有请求

  • INFINI Gateway 对删除数据操作进行拦截,在 Console UI 界面生成记录

  • 管理人员 在 Console UI 界面审批操作记录,审批通过操作被执行

方案演示

测试数据准备

测试索引 test1,一共有 3 条数据。message 内容分别是"line 1","line 2"和"line 3"。


启动 INFINI Gateway 及 Console

网关配置新增内容


增加对 DELETE 操作的捕获,不直接执行,写入队列中。后续由队列生成特定的记录。


router:  - name: my_router    default_flow: default_flow    tracing_flow: logging_flow    rules:      - method:          - "DELETE"        pattern:          - "/{any_index}"          - "/{any_index}/{any_type}"          - "/{any_index}/{any_type}/{any_docid}"        flow:          - audit_flow      - method:          - "*"        pattern:          - "/{any_index}/_delete_by_query"          - "/_delete_by_query"        flow:          - audit_flowflow:  - name: audit_flow    filter:      - logging:          queue_name: del_queuepipeline:  - name: del_queue_ingest    auto_start: true    keep_running: true    processor:      - json_indexing:          input_queue: "del_queue"          idle_timeout_in_seconds: 1          elasticsearch: "logging-server"          index_name: "del_requests"          worker_size: 1          bulk_size_in_kb: 1
复制代码

执行删除操作

ES 支持多种删除操作,简单总结归纳如下:


  1. 删除指定文档 id

  2. 删除索引

  3. 根据查询删除指定数据(_delete_by_query)


执行删除操作之前,先通过 INFINI Gateway 访问 ES 集群,证明可正常访问数据。



执行上述的几种删除命令,注意要发给 INFINI Gateway 的 8000 端口。


数据查询验证数据还在

Console 界面查看未批准的删除记录


所有删除操作,都被记录,待审批

Console 界面进行审批通过


选择一条记录,批准执行。Operation-approve

数据查询验证数据

"message": "line 2"的文档已被删除。


Console 界面查看历史记录

继续批准测试

批准删除一条文档




"message": "line 1" 的文档不在了。


批准删除索引




索引不在了。


至此我们演示了如何利用 INFINI Gateway 和 Console 对 ES 集群删除操作进行管控,本文只是抛砖引玉,相信还有更多有意思的场景等待大家发掘。


用户头像

简单、易用、极致、创新 2021-11-22 加入

极限科技数据实验室

评论

发布
暂无评论
ES数据没了?谁动了我的数据?_elasticsearch_极限实验室_InfoQ写作社区