DQL uses C API calls, not Elastic Search.
It combines view lookups with NSF searches. View looks are used if there are SELECT @All type of views that have user sortable columns that just contain an item name mentioned in one of the search query terms, e.g. Lastname="Lehmann".
In addition, the DB design needs to be scanned/indexed by the server using a server console command.
If multiple search terms are combined with AND, the terms are sorted first to optimize the documents to be scanned and later terms do not run on the whole NSF, but on a subset (a smaller IDTable).
Let's say you use the query
Lastname="Lehmann" & Firstname>"K"
then a view lookup in a "Lastname" column would result in a small IDTable of all documents that have "Lehmann" in the lastname item, which then could be NSF searched for Firstname>"K".
If a "Firstname" column exists, no NSF scan would be required at all.