@Daniel_Penning we've found the root cause of our problem
We can't use ParNewGC because we are on JDK12. We are experimenting using G1GC and ParallelOldGC. If the objects live for short time, why would I want to have a large useless old gen space? I'd give that space to the young gen instead right? Am I missing anything?
Also other thing, the ES doc says the mini index for percolation is optimized for percolation purpose. My mappings have doc_values as true [default], I'm guessing ES doesn't spend time on extracting doc_values for that single document that gets indexed in the mini index [for percolation]