你不会是程序猿吧?

es聚合字段过多,导致查询慢

Charele 回复了问题 • 2 人关注 • 1 个回复 • 2640 次浏览 • 2023-06-21 13:11 • 来自相关话题

ES的正排索引(field data)转为doc values存储后如何做到disk上实时搜索的

hapjin 回复了问题 • 4 人关注 • 2 个回复 • 6019 次浏览 • 2023-06-20 11:47 • 来自相关话题

各位大佬有没有ES/Lucene原理和开发相关的讨论群聊

liaosy 回复了问题 • 2 人关注 • 1 个回复 • 2623 次浏览 • 2023-06-16 17:12 • 来自相关话题

ELK7.2 启用安全认证功能 节点无法加到集群中

xialll 回复了问题 • 4 人关注 • 9 个回复 • 6540 次浏览 • 2023-06-08 16:48 • 来自相关话题

es集群及服务器扩容配置请教各位前辈

God_lockin 回复了问题 • 2 人关注 • 1 个回复 • 1822 次浏览 • 2023-06-06 14:48 • 来自相关话题

es 分组后求总分第一的数据

wulI 回复了问题 • 3 人关注 • 3 个回复 • 1769 次浏览 • 2023-06-05 21:05 • 来自相关话题

配置xpack安全认证需要重启并设置密码,这段时间集群不可用,怎么解决呢?

zqc0512 回复了问题 • 2 人关注 • 1 个回复 • 1601 次浏览 • 2023-06-05 17:05 • 来自相关话题

elasticsearch 设置密码的问题

caryliang 回复了问题 • 4 人关注 • 3 个回复 • 2607 次浏览 • 2023-06-02 17:40 • 来自相关话题

es进程异常退出,es日志和系统日志都无相关信息,求助各位大大~

lemontree666 回复了问题 • 3 人关注 • 2 个回复 • 7160 次浏览 • 2023-06-02 16:20 • 来自相关话题

CN_CHAR CN_WORD

zhangcm 回复了问题 • 2 人关注 • 1 个回复 • 1584 次浏览 • 2023-06-01 18:13 • 来自相关话题

使用RestHighLevelClient获取Cluster setting信息BLOCK死锁【已解决】

回复

yangjianxuan 回复了问题 • 1 人关注 • 6 个回复 • 2495 次浏览 • 2023-05-20 10:55 • 来自相关话题

es中json转QueryBuilder

回复

adsreach 回复了问题 • 1 人关注 • 1 个回复 • 2072 次浏览 • 2023-05-19 14:01 • 来自相关话题

请教各位一个ES关于nested检索问题

adsreach 回复了问题 • 1 人关注 • 1 个回复 • 1806 次浏览 • 2023-05-18 19:54 • 来自相关话题

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

yangmf2040 发表了文章 • 0 个评论 • 2798 次浏览 • 2023-05-13 08:46 • 来自相关话题

背景


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

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

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

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

方案架构


![](https://www.infinilabs.com/img ... p1.png)

方案效果


  • INFINI Gateway 作为 ES 集群的代理,接收所有请求
  • INFINI Gateway 对删除数据操作进行拦截,在 Console UI 界面生成记录
  • 管理人员 在 Console UI 界面审批操作记录,审批通过操作被执行

    方案演示


    测试数据准备


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

    ![](https://www.infinilabs.com/img ... p2.png)

    启动 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_flow
          flow:
    • name: audit_flow
      filter:
      • logging:
        queue_name: del_queue
        pipeline:
    • 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 集群,证明可正常访问数据。
          ![](https://www.infinilabs.com/img ... p3.png)
          执行上述的几种删除命令,注意要发给 INFINI Gateway 的 8000 端口。
          ![](https://www.infinilabs.com/img ... p4.png)

          数据查询验证数据还在


          ![](https://www.infinilabs.com/img ... p5.png)

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


          ![](https://www.infinilabs.com/img ... p6.png)

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

          Console 界面进行审批通过


          ![](https://www.infinilabs.com/img ... p7.jpg)

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


          数据查询验证数据


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

          ![](https://www.infinilabs.com/img ... p8.png)


          Console 界面查看历史记录


          ![](https://www.infinilabs.com/img ... p9.png)

          继续批准测试


          批准删除一条文档

          ![](https://www.infinilabs.com/img ... 10.png)

          ![](https://www.infinilabs.com/img ... 11.png)

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

          批准删除索引

          ![](https://www.infinilabs.com/img ... 12.png)

          ![](https://www.infinilabs.com/img ... 13.png)

          索引不在了。

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