• es删除索引


    背景

    集群的索引没有预先规划大小,导致索引特别大,删除数据删除索引的形式进行,只能在原来的索引上进行数据删除操作。

    删除索引时采用最经典的方式,即按照时间戳进行删除,比如删除90天以前的历史数据,保留最新的。

    Elasticseach会有后台线程根据Lucene的合并规则定期进行segment merging合并操作,一般不需要我们担心。被删除的文档在segment合并时,才会被真正删除掉。在此之前,它仍然会占用着JVM heap和操作系统的文件cache、磁盘等资源。在某些特定情况下,我们需要强制Elasticsearch进行segment merging,已释放其占用的大量系统、磁盘等资源。

    执行的期间你会发现,磁盘空间会有一个反复变化的过程,磁盘使用率会先增长,然后在删除释放空间这样一个过程。这个过程无需紧张,都是正常现象

    实践

    # 假如现在是中午11点,这个表示删除8点-10点之间的全部数据
    curl -X POST "http://localhost:9200/nginx-error-2021-10-12/_delete_by_query?pretty" -H 'Content-Type: application/json' -d'
    {
      "query": {
        "range": {
          "@timestamp": {
            "gte": "now-3h",
            "lt": "now-1h"
          }
        }
      }
    }'
    
    
    
    #假如现在是中午11点,这个表示删除早上6点之前的全部数据,也就是比6点早的数据全部删除
    curl -X POST "http://localhost:9200/nginx-error-2021-10-12/_delete_by_query?pretty" -H 'Content-Type: application/json' -d'
    {
      "query": {
        "range": {
          "@timestamp": {
            "lt": "now-5h"
          }
        }
      }
    }'
    
    
    
    #假如现在是中午11点,这个表示删除早上6点-11点之间的数据
    curl -X POST "http://localhost:9200/nginx-error-2021-10-12/_delete_by_query?pretty" -H 'Content-Type: application/json' -d'
    {
      "query": {    
        "range": {
            "@timestamp": {
              "gt": "now-5h"
            }
        }
      }
    }'
    
    
    
    #最后再执行下面命令即可开始正式删除数据了,会产生大量的io
    curl -X POST http://localhost:9200/nginx-error-2021-10-12/_forcemerge?max_num_segments=1&only_expunge_deletes=true
    

    附带一张实践图片

    启发:

    上面的过程由自己实践而来,其中受到了下面执行的启发,特此记录一下

    POST /index-name/_delete_by_query?slices=auto&conflicts=proceed&wait_for_completion=false
    {         //多线程并发删除满足查询条件的数据
      "query": {
        "bool": {
          "filter": {
            "bool": {
              "must_not": [
                {
                  "term": {     //查询条件,可以自定义
                    "action": "XXXXXXX"
                  }
                },
                {
                  "exists": {
                    "field": "XXXXXXXX"   //查询条件,可以自定义
                  }
                }
              ]
            }
          }
        }
      }
    }
    

    参考的一些链接:

    腾讯云博客参考:https://cloud.tencent.com/developer/article/1737025

    官方文档演示:https://www.elastic.co/guide/cn/elasticsearch/guide/current/_ranges.html

    官网文档使用:https://www.elastic.co/guide/en/elasticsearch/reference/6.4/common-options.html#date-math

  • 相关阅读:
    各种品牌电脑进入主板BIOS的方法(快捷键,按键)
    安装Oracle9i,遇到“File not found D: \oracle\ora92\ocs4j\admin\OCS4J.properties”
    关于远程桌面出现:“由于数据加密错误,这个会话将结束。请重新连接到远程计算机。”
    定时开关机
    Unix(Solaris) 常用基本命令和用户管理命令
    安装oracle9i时碰到缺少或无效口令提示
    ActiveX开发心得(转)
    oracle usermaneged recovery(三)
    用js实现改变随意改变div属性style的名称和值的结果
    Android_adb.exe的问题整理
  • 原文地址:https://www.cnblogs.com/FengGeBlog/p/15400228.html
Copyright © 2020-2023  润新知