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
我想要的结果,就是直接通过DSL把两次分组后的结果再通过status=1来过滤,这样就不需要内存分页了,但是尝试了好几种写法,都没有成功
请赐教,bucket_selector也尝试过了,但是没有达到我的效果