I had a setup of 3 Elasticsearch (2 of them with roles data and master node, with each 6g memory, 1 master only node with 6g memory, discovery.zen.minimum_master_nodes set to 2 in all three nodes), 2 Logstash nodes with 4g memory each, and 2 Kibana nodes. The Logstash nodes were pushing the data directly to the ES nodes. This was causing a lot of 429s.
Later, made as few changes according to the blog. I added 2 coordinating nodes (3g memory each) to the cluster, to which the Logstash nodes push the data.
But even with this change in setup I am getting 429s.
I am not sure if this will help but the CPU and Memory are heavily loaded only on the 2 data + master nodes and rest of the nodes (1 master only and 2 coordinating nodes) have barely any load on them.