My need: Have around 60K documents totalling 300MB. There will be writes/updates but volume wouldn't be high. GET requests would be high and I need to ensure high availability and high performance.
My prototype design: I have a Java client (microservice containers on Kubernetes) and using org.elasticsearch.client.RestClient to fire http requests to the elasticsearch node using IP address of the node (RestClient.builder(new HttpHost(elasticsearchHost, elasticsearchPort, "http"))).
Production design: After going through documentation, I thought I can have 3 nodes with 2 master eligible nodes (each node has 1 shard and 1 replica; each node - 16GB RAM, 6VCPUs). I am NOT planning to segregate master, node and ingest nodes as my document volume is not too high.
Problem statement: How do I modify my RestClient to send the http requests in a load balanced way (round robin fashion) to each of three nodes.
As this is my first venture into elasticsearch, I seek guidance from experts in this forum to validate if my production configuration looks optimized, and also how do I get to a solution over my problem statement.