奔跑中的兔子 2022-11-15 11:01
浏览 5
已结题

es聚合后再过滤的问题

es聚合后再过滤的问题
背景:平台告警事件,每个设备会有多个告警事件A,B,C,每个告警事件会有多条记录,先通过es查询。设备用sn标识,告警事件用code标识
要求:需要查询每个设备,每个告警事件的最新一条记录,然后再通过得到的结果根据状态status=1来过滤。
备注:不能先通过status = 1过滤,因为如果系统中数据是status为0,1,0,1,0,1交替产生的,如果先直接通过1过滤,那么就会把那种先1,再0的也查出来了,这种不符合条件,我只要那种1,0,1,最后一次产生值为1的数据

我的DSL,先通过sn分组,在通过code分组,通过time排序只取最新一条记录,然后再拿到数据通过内存分页,目前没问题,数据量起来后就有问题
POST latest_device_event/_search

img

我想要的结果,就是直接通过DSL把两次分组后的结果再通过status=1来过滤,这样就不需要内存分页了,但是尝试了好几种写法,都没有成功

请赐教,bucket_selector也尝试过了,但是没有达到我的效果

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 11月23日
    • 创建了问题 11月15日

    悬赏问题

    • ¥15 微信会员卡等级和折扣规则
    • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
    • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
    • ¥15 gdf格式的脑电数据如何处理matlab
    • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
    • ¥100 监控抖音用户作品更新可以微信公众号提醒
    • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
    • ¥70 2048小游戏毕设项目
    • ¥20 mysql架构,按照姓名分表
    • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分