<your search> [<your maintenance log search>
``` Use mvrange to duplicate start events ```
| eval range=if(match(event,"start"),mvrange(0,2),null())
| mvexpand range
``` Change duplicated event to 4 hours later ```
| eval _time=if(range=1,_time+(60*60*4),_time)
``` Make duplicated event an end of maintenace event ```
| eval event=if(range=1,"end of maintenance",event)
``` Sort in descending time order (latest first) ```
| sort 0 -_time
``` Set latest to the time of end events ```
| eval latest=if(match(event,"end"),_time,null())
``` Copy latest time to next event ```
| filldown latest
``` Just keep start events (now with time of next end event) ```
| where match(event,"start")
``` Assuming you want just the latest maintenance period ```
| head 1
| rename _time as earliest
``` Use earliest and latest to filter your main search ```
| fields earliest latest]
... View more