why elasticsearch reject almost all queries when thread pool and queue is full instead of answering as much as possible and rejecting the remaining?
I think this is a normal behavior. it seems in some time you have resource killer queries and your thread_pool become full and after that the queue would be full. when thread_pool is full it mean that system is processing existing queries and there is no room for new queries.
I recommend to check the tasks and queries:
curl -s [master-ip]:9200/_cat/tasks?v
get delayed search task_ID from above command an use in below command
curl -s [master-ip]:9200/_tasks/[task_ID]?pretty