ES条件删除_delete_by_query的DSL-2019-10-18

ES条件删除_delete_by_query的DSL-2019-10-18,第1张

在ES中条件删除的DSL:

POST /indexName/typeName/_delete_by_query?conflicts=proceed&scroll_size=10000

{

  "query": {

    "range": {

      "receive_date": {

        "gte": "2019-10-01",

        "lte": "2019-10-01"

      }

    }

  }

}

一个完善的系统应该是有循环清理旧数据策略的. elk当日志平台的话,一般只需要保存一段时间就够了.删除策略就直接循环删除索引.

索引是每天生成一个,包含当天日期.这样才可以按照日期来进行删除.

可以用命令查看当前的索引

这种是属于比较简单粗暴的删除,真正的场合应该每个索引会保留不同的时间的,需要根据具体索引来定义删除时间.

首先,你的表肯定是做了外键等约束的,所以删除,要从最外层删除。假设你的数据库是Sql Server的。

1、技能表

delete from 技能表 where 人物id in (select 人物id from 人物表 where 账号id in (select 账号id from 账号表 where datediff(day,上次登录时间lasttime,getdate())>=3))

2、装备属性表

delete from 装备属性表 where 装备id in (select 装备id from 装备表 where 人物id in (select 人物id from 人物表 where 账号id in (select 账号id from 账号表 where datediff(day,上次登录时间lasttime,getdate())>=3)))

3、装备表

delete from 装备表 where 人物id in (select 人物id from 人物表 where 账号id in (select 账号id from 账号表 where datediff(day,上次登录时间lasttime,getdate())>=3))

4、人物表

delete from 人物表 where 账号id in (select 账号id from 账号表 where datediff(day,上次登录时间lasttime,getdate())>=3)

5、账号表

delete from 账号表 where datediff(day,上次登录时间lasttime,getdate())>=3


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6690658.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-26
下一篇 2023-03-26

发表评论

登录后才能评论

评论列表(0条)

保存