You are completely correct though – the Kibana server is taking longer than 30 seconds to fetch the data from Elasticsearch, this is why it gives up and just shows an error. If your requests sometimes take longer, you can increase the value in your kibana.yml file by giving elasticsearch.requestTimeout a value greater than 30000 (the unit is ms). The default is just in place here to prevent super expensive queries submitted by accident to run forever and slowing down your cluster.
That being said, > 30s load time is a lot. Maybe it is possible to tune your server a bit without adding hardware. For guidance around this you can post in the ES forum 13 and I’m sure you will find help.