Testing with https://json-everything.net/json-path/, the following expression works with the above JSON example. Split across multiple lines for clarity:
$[? (@.type=="Conveyor - Single Item" || @.type=="Conveyor - Accumulating")
&&
@["Downstream Device"][?search(@.value, SEARCH_STRING)]
|| @.type=="Shuttle"
&&
@["Locations"][*]["Downstream Device"][?search(@.value, SEARCH_STRING)]
]