I may be wrong on this but I recall that some aspects of a query are tight loops that are deliberately not interrupted because they are building data structures that are of use to all queries, not just the current one. The global ordinals
for example need to be re-built after a refresh and if a query starts that process I think it may not be timed out because the resulting cache will benefit other queries. That certainly used to be the policy when loading the field data cache.
If global ordinals are the issue (see example ) then it might be worth avoiding them through the use of "execution_hint":"map"
if your query matches modest numbers of terms.