I do not understand why you are using t2.xlarge instances, which have very limited CPU allocation and can easily be starved. A node of that specification is not able to fully utilize all the IOPS you have provisioned for your storage, so I suspect you are wasting money on those IOPS. I would recommend switching to an instance type with higher amounts of constant CPU, e.g. an m5.
I would also recommend hosting Elasticsearch on dedicated instances if that is possible.