If you're saying that load of 5-10 on an 8 core machine is causing really slow response, I would suggest adding another machine. If your load actually hovers closer to 5, which your average suggests, then moving to an SSD instead of HDD would be a good boost.
Main returns you're going to see are going to be from optimizing your mappings, and the way you index / query.
Taking a few shots in the dark here:
Make sure you're indexing in bulk instead of single documents
Increase refresh_interval for the index to a larger value of 60s or more.
Don't allocate more than 31GB to your elasticsearch heap. 32G+ requires 64-bit pointers, so you get less by giving your process more.
If reading disk indeed is a major bottleneck, try giving your elastic process 20G heap to leave more room for filesystem cache. (monitor with iostat)
Create your index with 7-8 shards instead of default 5, to spread load more across the cores if you are mainly indexing and have a few Kibana users to look at the data.
For more help please share mappings, sample of data, indexing and query patterns.
Apache, Apache Lucene, Apache Hadoop, Hadoop, HDFS and the yellow elephant
logo are trademarks of the
Apache Software Foundation
in the United States and/or other countries.