Does ES by default cache the query result?

I know ES could cache the filter result, but how about query result, especially the hits result?

No. Filters are cached.
Why are you asking that? Do you have an issue?

We are running performance test against our ES cluster using Jmeter with simple settings:
20 user load
target throughput 1000 QPS
10 different query request.

The average response time is around 8 ms after 1 hour running. The 8 ms PLT is so good that I even cannot believe it. So I was wondering if the result of frequent query request was cached.